Javascript嵌套循环脚本的说明

时间:2020-07-22 18:30:04

标签: javascript function nested

我在理解此嵌套循环及其工作方式时遇到麻烦。

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

有人可以引导我完成这个无限循环的一遍,解释事物发生的顺序。

2 个答案:

答案 0 :(得分:0)

这是一个无限循环,因为i是用var声明的,因此它保留在foo函数的顶部,然后bar函数修改了相同的{{1} }。因此i的值为0、2、3、2、3 ...

i

答案 1 :(得分:0)

现在,它步入无限循环的原因是由于'var',i = 2被吊在顶部,并且每当for循环迭代i时,其值将重新分配为2,因此永不结束循环。

相关问题