vara=1;functionfoo(){if(!a){vara=2;}alert(a);};foo();//2解释器分析代码为:vara;a=1;functionfoo(){vara;if(!a){a=2;}alert(a);//此时的a并非函数体外的那个全局变量}a=2;并不等价于vara;a=2;为什么foo()函数里会有一个vara;?
2 回答
慕雪6442864
TA贡献1812条经验 获得超5个赞
我谈下我的理解,函数的变量作用域是函数级的,`if(!a){vara=2;;}`这一块不管!a取到的布尔值是否为真,程序都会找到var声明的a,进行变量提升,也就是vara;因为a声明了,未赋值,因此是undefined,取反刚好是true,然后a重新赋值为2,所以打印出来的就是2
添加回答
举报
0/150
提交
取消