为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ABOUTYOU 2018-10-17 14:15:24
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();        
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

这段代码明显有毒啊。

function foo() {

    //var i 变量提升。

    function bar(a) {

        i = 3;//这里的i为外部作用域的i

        console.log(a + i);

    }


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

        bar(i * 2);//这里i重置回3,导致死循环

    }

}


foo();


查看完整回答
反对 回复 2018-11-30
  • 1 回答
  • 0 关注
  • 523 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信