【发布时间】:2013-12-16 19:57:07
【问题描述】:
这段代码无限运行,为什么?
function f(n){
i=0;
if (n==2){
while(i<2){
f(i);
i++;
}
}
}
如果 n!=2 函数应该什么都不做 如果 n 等于 2 函数调用 f(0) 和 f(1) 所以它应该在那之后停止 但是运行时只会出现无限循环。
有人能说出原因吗?
编辑:函数之外没有任何东西。
并且不需要更好的代码。只是问为什么。
【问题讨论】:
-
因为
i是全球性的? -
因为每次调用
f时,它都使用 samei值。每次,i都被重新设置为0,所以它一直在循环。在第一次调用f(2)时,您永远不会跳出 @987654327@ 循环。 -
如果这是您尝试理解 JS 作用域的方式,请尝试从一个更简单的示例开始。
-
"var is not optional" 我认为这会是一个很棒的歌名。
-
在 JavaScript 中,如果你不使用
var声明变量,它会创建一个隐式全局变量。如果你使用var,它的作用域就是声明它的函数。