【发布时间】:2012-12-22 22:34:57
【问题描述】:
我很困惑。有人可以向我解释为什么这会产生无限循环吗?
var constant = 4;
var stack = new Array();
stack.push(0);
stack.push(1);
loop1();
function loop1(){
for(i = 0; i < constant; i++){
loop2(i);
}
}
function loop2(num){
for(i = 0; i < stack.length; i++){
console.log(i);
}
}
小提琴:http://jsfiddle.net/elclanrs/tywV9
我怀疑它与 Javascript 函数级变量范围有关,但我的猜测是这样。
【问题讨论】:
-
我认为你的问题是你没有声明
i,在你的循环中尝试var i = 0 -
我们通常不需要在 JS 中声明变量,对吗?那么在这种情况下我们为什么必须这样做呢?
-
如果你不这样做,那么
i是全局的,可能会导致问题。 -
@LimH 您应该使用
var关键字声明变量,否则它们会被隐式设为全局变量。出于多种原因,强烈建议限制使用全局变量。 -
加上全局
i的小提琴挂在我的浏览器上,而var却没有jsfiddle.net/elclanrs/UEjaY
标签: javascript scope