变量i未在JavaScript循环中传递给函数

Xuzheng Wang

我了解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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章