【发布时间】:2012-06-20 02:23:37
【问题描述】:
可能重复:
Javascript closure inside loops - simple practical example
我有一个简单的问题。我正在使用 HTML5 画布元素,并且我有一个在画布上绘制一系列框的循环。此代码工作正常:
for (var i = 0; i < this.boxes.length; i++) {
this.drawBox(canvas, this.boxes[i]);
}
现在我想给画框循环添加一点延迟,所以我把循环改成这样:
for (var i = 0; i < this.boxes.length; i++) {
var me = this;
var xcanvas = canvas;
var box = this.boxes[i];
var func = function () {
me.drawBox(xcanvas, box);
};
window.setTimeout(func, i * 50);
}
第二个循环只从 this.boxes 数组中画出一个盒子(数组可以包含 1 到 16 个盒子)。源代码中的所有其他代码都是相同的。这怎么可能?
** 详细的变量声明用于对引用进行故障排除 **
任何帮助将不胜感激。
【问题讨论】:
-
典型的“闭环问题”,请看stackoverflow.com/questions/750486/…
标签: javascript canvas timer settimeout