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());
3 回答
已采纳
夜舞暗澜
TA贡献19条经验 获得超7个赞
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
TA贡献5条经验 获得超1个赞
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,把前面的值都给覆盖掉了
添加回答
举报
0/150
提交
取消