老规矩,先上代码,帮忙指点下变量作用域 财富值33

2016-10-22 10:20发布

(function(){ a = 5; alert(window.a); var a = 10; alert(a); })(); 

这段代码中的alert,为什么第一个是返回的undefined.按说,不要VAR的a变量,不就是全局变量吗?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答

变量提升啊,下面有var a 啊,你知道变量提升吗?

程序执行顺序跟你想的不太一样,程序是先声明变量再进行赋值,比如你写的,程序其实是这么执行的,遇到a=5时,其实是先声明了一个全局变量a但是不赋值,然后继续在下午又有一个var a就又声明一个局部变量a然后下面没有其他的声明变量或者函数的代码了才开始进行赋值操作,也就是说赋值操作在最后,而你alert时还没有赋值所以undefined,我是这么理解,其实就是变量声明提升机制

嗯,变量提升,变量声明会提前到最前面,与输写的顺序无关。

一周热门 更多>