var a=1; function b(){ a =10; return ; //function a(){} } b(); alert(a);以上alert 10去掉注释 var a=1; function b(){ a =10; return ; function a(){} } b(); alert(a);就alert 1 为什么呢?
1 回答
holy_night
TA贡献5条经验 获得超0个赞
经过chrome调试下发现代码运行原理应该是这样
当执行b()时进入函数b的作用域,然后当执行代码“a=10;”之前a就已经是function了,然后执行a=10;只不过是把function a 赋值为10;跟外部a一点关系都没有,所以实际代码简化如下:
var a=1;
function b(){
function a(){}
a =10;
return ;
}
b();
alert(a);
要注意函数声明是提前读取的不是走到最后才声明出函数a!
添加回答
举报
0/150
提交
取消