猿问

bar(...)内部的赋值表达式i = 3是如何覆盖了声明在foo(...)内部for循环中的i。

bar(...)内部的赋值表达式i = 3是如何覆盖了声明在foo(...)内部for循环中的i。

function foo() {

    function bar(a) {

        i = 3;

        console.log( a + i );

    }

        

        for (var i=0; i<10; i++) {

            bar(i*2);

    }

}

    

foo();

        


ABOUTYOU
浏览 524回答 1
1回答

阿波罗的战车

这段代码明显有毒啊。function foo() {&nbsp; &nbsp; //var i 变量提升。&nbsp; &nbsp; function bar(a) {&nbsp; &nbsp; &nbsp; &nbsp; i = 3;//这里的i为外部作用域的i&nbsp; &nbsp; &nbsp; &nbsp; console.log(a + i);&nbsp; &nbsp; }&nbsp; &nbsp; for (var i = 0; i < 10; i++) {&nbsp; &nbsp; &nbsp; &nbsp; bar(i * 2);//这里i重置回3,导致死循环&nbsp; &nbsp; }}foo();
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答