var b = 2; function fun(){ console.log(b); if(b==2){ function b(){ console.log(111); } console.log(222); }else{ console.log(b); };}fun();为什么打印出来的是两个undefined 而不是两个2,我调试了一下 看到执行步骤,监视变量b,确实是undefined,但我不知道为什么?
1 回答
phper_linuxer
TA贡献16条经验 获得超25个赞
这是因为条件式函数声明跟函数表达式的处理方式一样。 因此,条件式函数声明丧失了函数声明提升的特性。 就是说你的代码相当于 var b = 2; function fun(){ console.log(b); if(b==2){ var b = function (){ console.log(111); } console.log(222); }else{ console.log(b); }; } fun(); 结合变量提升和作用域链的知识,我想你应该就明白了...
添加回答
举报
0/150
提交
取消