javascript - 如何使用局部参数创建匿名函数

标签 javascript anonymous-function

如何使此 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 传递给匿名函数。

最佳答案

你可以像这样把它包装在一个闭包中:

var vals = [1, 2, 3];

for(var i = 0; i < vals.length; i++) {
    (function(num) {
        window.setTimeout(function() {alert(vals[num]);}, 1000);
     })(i);
}

试一试:http://jsfiddle.net/qgL7h/

关于javascript - 如何使用局部参数创建匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7166190/

相关文章:

javascript - 根据 Name 属性的值更改背景颜色

javascript - 当 url 包含空格时, Angular ng 样式背景图像

javascript - Highcharts JS - 热图设置 gridLineWidth

java - 如何从struts2发送数据到javascript函数来绘制图表

javascript - 复制数组时 slice() 的奇怪问题

scala - 使用丰富我的库对匿名函数进行类型推断

javascript - 为什么使用 strict 时匿名函数中的 "this"未定义?

javascript - 如何传递函数来比较项目?

'all methods' 的 C# 委托(delegate)或 Func?

javascript - 允许 JavaScript 闭包从父级作用域继承变量