为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript基础知识

Javascript基础知识

holdtom 2019-05-24 11:32:12
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
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信