代码如下vara=1;functiondemo(){console.log(a);//undefinedvara=2;console.log(a);//2}demo();为什么第一个是undefined第二个是2?
2 回答
当年话下
TA贡献1890条经验 获得超9个赞
因为这一句:vara=2;JavaScript函数里的var声明执行时会被提升到函数的顶端,也就是说最终执行的代码不是:console.log(a);vara;a=2;而是:vara;//这里的声明将外部作用域中的a声明覆盖掉了console.log(a);//undefineda=2;把那个var去掉就正常了。文档:varhoisting
qq_笑_17
TA贡献1818条经验 获得超7个赞
你的代码等价于这个vara=1;functiondemo(){vara=undefined;console.log(a);//undefineda=2;console.log(a);//2}demo();
添加回答
举报
0/150
提交
取消
