除了標準之外,還有Javascript中變量捕獲的確切來源(閱讀標準很痛苦)嗎?通過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倍。爲什麼?我對參考文獻/一般文章更感興趣,而不是解釋這個具體的捕獲案例。
爲什麼我不是對於j – nponeccop 2012-04-10 19:52:22
@nponeccop創建一個新的範圍目前尚不清楚,JavaScript有功能範圍。 – 2012-04-10 19:54:18
我正把頭撞在桌子上。不知道,假設它是C++或Perl或Haskell :)迷人 – nponeccop 2012-04-10 19:58:36