Javascript:循环关闭? [英] Javascript: closure of loop?
本文介绍了Javascript:循环关闭?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想做以下事情:
for (var i = 0; i < 10; ++i) {
createButton(x, y, function() { alert("button " + i + " pressed"); }
}
问题在于我总是得到 i
的最终值,因为 Javascript 的闭包不是按值的.
那么我怎样才能用 javascript 做到这一点呢?
The problem with this is that I always get the final value of i
because Javascript's closure is not by-value.
So how can I do this with javascript?
推荐答案
for(var i = 0; i < 10; i++) {
(function(i) {
createButton(function() { alert("button " + i + " pressed"); });
})(i);
}
请注意,JSLint 不喜欢这种模式.它抛出不要在循环中创建函数.".
Note that JSLint doesn't like this pattern. It throws "Don't make functions within a loop.".
现场演示: http://jsfiddle.net/simevidas/ZKeXX/
这篇关于Javascript:循环关闭?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文