除了标准之外,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)
in 节点的类比。
但在下一个代码中,我似乎没有被复制:
for (var i = 0; i < 10; i++)
{
var j = i
process.nextTick(function ()
{
console.log(j)
})
}
它打印 9 10 次。为什么?我对参考/一般文章更感兴趣,而不是解释这种具体的捕获案例。