我在理解此嵌套循环及其工作方式时遇到麻烦。
function foo() {
function bar(a) {
i = 2; // change value of in in enclosing scope
console.log(a + i);
}
for (var i=0; i<10; i++) {
bar(i); // infinite loop
}
}
foo();
有人可以解释为什么酒吧叫3吗?我以为在封闭的for循环中,第一个时间条被称为i的初始值是否为零?
我知道这是一个无限循环,其中a +我总是打印5 我知道传递给bar的参数a的值始终为3 我知道功能栏中的i值始终为2
有人可以引导我完成这个无限循环的一遍,解释事物发生的顺序。
答案 0 :(得分:0)
这是一个无限循环,因为i
是用var
声明的,因此它保留在foo
函数的顶部,然后bar
函数修改了相同的{{1} }。因此i
的值为0、2、3、2、3 ...
i
答案 1 :(得分:0)
现在,它步入无限循环的原因是由于'var',i = 2
被吊在顶部,并且每当for循环迭代i
时,其值将重新分配为2,因此永不结束循环。