如何使用局部参数创建匿名函数
如何使这个 javascript 警报为 0、1 和 2,而不是 3 3?
var vals = [1, 2, 3];
for(var i = 0; i < vals.length; i++)
{
window.setTimeout(function() {alert(i);}, 1000);
}
我知道它这样做的原因,但我不知道如何将 i
传递给匿名函数。
How do I make this javascript alert 0, 1 and 2 instead of 3 3's?
var vals = [1, 2, 3];
for(var i = 0; i < vals.length; i++)
{
window.setTimeout(function() {alert(i);}, 1000);
}
I know the reason why it does this, but I can't figure out, how to pass i
to the anonymous function.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(3)
紫罗兰の梦幻2024-12-08 10:25:14
传递 i 给函数并不是绝对必要的,它可以分配给内部的局部变量。
var vals = [1, 2, 3];
for(var i = 0; i < vals.length; i++) {
(function() {
var num = i
window.setTimeout(function() {alert(vals[num]);}, 1000);
})();
}
“function(){block}()”是必需的,因为 Javascript 没有适当的块词法变量。最近的版本添加了“let”,这使得这成为可能:
var vals = [1, 2, 3];
for(var i = 0; i < vals.length; i++) {
let num = i
window.setTimeout(function() {alert(vals[num]);}, 1000);
}
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您可以将其包装在一个闭包中,如下所示:
尝试一下: http://jsfiddle.net/qgL7h/
You can wrap this in a closure like so:
Try it: http://jsfiddle.net/qgL7h/