我了解var i没有块级范围;但是,在下面的代码中,d.push(); 在初始化i之后执行,为什么我在这里仍然未定义?
var d = [];
for (var i = 0; i < 3; i++) {
d.push(function(i) {
console.log('iterator: ' + i);
});
}
d[0]();//undefined
任何想法将不胜感激
您可以通过使用推送匿名函数的参数绑定版本,.bind()
从而确保第一个参数的值。
var d = [];
for (var i = 0; i < 3; i++) {
d.push((function(i) {
console.log('iterator: ' + i);
}).bind(this, i));
}
d[0](); // iterator: 0
d[1](); // iterator: 1
d[2](); // iterator: 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句