【发布时间】:2012-04-23 03:16:08
【问题描述】:
除了标准之外,Javascript中的变量捕获是否有明确的来源(阅读标准很痛苦)?
在下面的代码中i是按值复制的:
for (var i = 0; i < 10; i++)
{
(function (i)
{
process.nextTick(function ()
{
console.log(i)
})
}) (i)
}
所以它打印 1..10。 process.nextTick 是节点中 setTimeout(f,0) 的模拟。
但在接下来的代码中,我似乎没有被复制:
for (var i = 0; i < 10; i++)
{
var j = i
process.nextTick(function ()
{
console.log(j)
})
}
它打印 9 10 次。为什么?我对参考/一般文章更感兴趣,而不是解释这个具体的捕获案例。
【问题讨论】:
标签: javascript node.js closures