这个结果为什么全都是16而不是全都是9 i<=3应该 3*3等于9啊 我很不解

function count() {
   var arrs = [];
   for(var i = 1;i<=3;i++){
       arrs.push(function () {
           return i * i;
       });
   }
   return arrs;
}
var result = count();

var fire1 = result[0];
var fire2 = result[1];
var fire3 = result[2];

console.log(fire1());
console.log(fire2());
console.log(fire3());

名渊
浏览 1894回答 3
3回答

夜舞暗澜

arr.push()的参数为function类型。当输出 result=[ function(){ return i * i }, function(){ return i * i }, function(){ return i * i } ]时,result的 i 默默地循环了三遍,停在了 i=4 上。然后当你使用 result[0]() 时,将i=4带入function,得到16。循环会在设置好时调用,不会等着你,但是function只会在调用时调用。

慕瓜2309318

function count() {   var arrs = [];   for(var i = 1;i<=3;i++){       arrs.push(i * i); //此处代码修改   }   return arrs; } var result = count(); var fire1 = result[0]; var fire2 = result[1]; var fire3 = result[2]; console.log(fire1);//此处代码修改 console.log(fire2);//此处代码修改 console.log(fire3);//此处代码修改你的代码中,count() 方法中,arrs是你获得的 一个含有方法的的集合,i最后的值为4,把前面的值都给覆盖掉了

橋本奈奈未

最后一次i++变成4但没有进入循环
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript