【发布时间】:2013-03-21 20:55:46
【问题描述】:
var count = 0;
for ( var i = 0; i < 4; i++ ) {
setTimeout(function(){
assert( i == count++, "Check the value of i." );
}, i * 200);
}
为什么这不起作用(i 等于 4 而不是每次都等于计数)? count, var 是在全局范围内创建的,为什么它们在函数内不可用?
(我想解释一下为什么这不起作用,我找到了一种通过将其包装在另一个函数中来使其工作的方法,只是想了解)
【问题讨论】:
-
按预期工作 -> FIDDLE,但
i的值会发生变化,正如您所期望的那样。
标签: javascript function variables closures global