Есть ли определенный источник по захвату переменных в 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)
в node.
Но в следующем коде я не скопирован:
for (var i = 0; i < 10; i++)
{
var j = i
process.nextTick(function ()
{
console.log(j)
})
}
Он печатает 9 10 раз. Почему? Меня больше интересует справочная/общая статья, чем объяснение этого конкретного случая захвата.