Czy istnieje określone źródło przechwytywania zmiennych w Javascriptu poza standardem (odczytanie standardu jest bolesne?)Zrozumienie przechwytywania zmiennych przez zamknięcia w języku JavaScript/węźle
W poniższym kodzie i
jest kopiowany przez wartość:
for (var i = 0; i < 10; i++)
{
(function (i)
{
process.nextTick(function()
{
console.log(i)
})
}) (i)
}
Więc drukuje to 1..10. process.nextTick
jest analogiem setTimeout(f,0)
w węźle.
Ale w następnym kodu i nie wydają się być kopiowane:
for (var i = 0; i < 10; i++)
{
var j = i
process.nextTick(function()
{
console.log(j)
})
}
Drukuje 9 10 razy. Czemu? Bardziej interesuje mnie artykuł referencyjny/ogólny niż wyjaśnienie tego konkretnego przypadku przechwytywania.
nie jest jasne, dlaczego ja nie tworząc nowe możliwości j – nponeccop
@nponeccop, JavaScript posiada zakres funkcji. –
Uderzam głową w stół. Nie wiedziałem tego, założyłem, że jest to C++ lub Perl lub Haskell :) Fascynujący – nponeccop