昨天,我在递归函数中出现了奇怪的行为,这让我感到沮丧。我设法重现并注意到其他行为。基本上,下面的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),你会知道的。 –