昨天,我在遞歸函數中出現了奇怪的行爲,這讓我感到沮喪。我設法重現並注意到其他行爲。基本上,下面的html/js中的變量似乎是全局的。輸出是4,然後是5.我使用FF 40.0.2。截至上週的最新版本的Node.js(ish)發生了同樣的問題。我沒有注意到它的版本號。在for-statments中聲明的變量似乎是全局的
什麼給?它應該像這樣嗎?問題消失我在每個for語句上面聲明瞭循環變量。
<head>
<script>
function foo(recurse)
{
if (recurse)
{
for (i = 0; i < 2; ++i)
{
foo(false);
console.log(i);
}
}
else
{
for (i = 0; i < 4; ++i)
{}
}
}
foo(true);
</script>
</head>
預期輸出:
0
1
實際輸出:
4
不清楚該怎麼標記這一點。
在JavaScript中,任何未聲明的內容都將存儲在Global(窗口)對象中。 嘗試console.log(window.i),你會知道的。 –