猿问

Javascript基础知识

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;?
holdtom
浏览 321回答 2
2回答

慕雪6442864

我谈下我的理解,函数的变量作用域是函数级的,`if(!a){vara=2;;}`这一块不管!a取到的布尔值是否为真,程序都会找到var声明的a,进行变量提升,也就是vara;因为a声明了,未赋值,因此是undefined,取反刚好是true,然后a重新赋值为2,所以打印出来的就是2
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答