老规矩,先上代码,帮忙指点下变量作用域?

<爱尬聊_百科词条>

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

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


超级转基因工作狂 22小时前

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


xuyiming0605 22小时前

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


泛滥情人 22小时前

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


编辑 举报 2023-04-18 11:48

0个评论

暂无评论...
验证码 换一张
相关内容