JavaScript 变量绑定和循环
- 论坛
- JavaScript 变量绑定和循环
14 浏览
JavaScript 变量绑定和循环
考虑以下循环:
for(var it = 0; it < 2; it++) { setTimeout(function() { alert(it); }, 1); }
输出结果为:
=> 2 => 2
我希望输出结果为:0, 1。我看到两种方法可以修复它:
解决方案#1.
这个解决方案基于我们可以将数据传递给setTimeout的事实。
for(var it = 0; it < 2; it++) { setTimeout(function(data) { alert(data); }, 1, it); }
解决方案#2.
function foo(data) { setTimeout(function() { alert(data); }, 1); } for(var it = 0; it < 2; it++) { foo(it); }
还有其他替代方案吗?