我有看起来像这样的代码:
var a = [];
for(var i = 0; i < 10; i++) {
a[i] = function() {
console.log(i);
}
}
不幸的是,似乎i
是通过引用传递的,所以a
输出10中的所有函数都是如此。如何使每个函数输出i
创建时具有的值?即a[0]()
给出0,a[1]()
给出1,依此类推。
编辑:澄清一下,我不想a
存储0-9的值。我想a
存储返回值0-9的函数。
您需要调用一个函数(以创建一个捕获值的闭包),该函数将返回一个函数(您要最终获得的函数)。像这样的东西:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = (function(value) {
return function() {
console.log(value);
}
})(i);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句