小白请教各位大神,下面这段代码:var a = [];for (var i = 0; i < 10; i++) {
a[i] = function () { console.log(i);
};
}
a[6](); // 10a[6]()的输出结果为什么不是6?a[6]不是等于:a[6] = function () { console.log(6);
};这样的话a[6]()输出应为6?
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
这道题靠闭包原理,利用闭包原理可以做到.面试新人经常会考到的题
在<<高级程序设计>>中讲闭包章节时,有提到,楼主可以去翻翻书,这样印象会深刻一些
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = (function(index){
return function(){console.log(index)}
})(i)
}
a[6](); // 6
添加回答
举报
0/150
提交
取消