2016-10-22 10:20发布
(function(){ a = 5; alert(window.a); var a = 10; alert(a); })();
这段代码中的alert,为什么第一个是返回的undefined.按说,不要VAR的a变量,不就是全局变量吗?
变量提升啊,下面有var a 啊,你知道变量提升吗?
程序执行顺序跟你想的不太一样,程序是先声明变量再进行赋值,比如你写的,程序其实是这么执行的,遇到a=5时,其实是先声明了一个全局变量a但是不赋值,然后继续在下午又有一个var a就又声明一个局部变量a然后下面没有其他的声明变量或者函数的代码了才开始进行赋值操作,也就是说赋值操作在最后,而你alert时还没有赋值所以undefined,我是这么理解,其实就是变量声明提升机制
嗯,变量提升,变量声明会提前到最前面,与输写的顺序无关。
最多设置5个标签!
付费偷看金额在0.1-10元之间
变量提升啊,下面有var a 啊,你知道变量提升吗?
程序执行顺序跟你想的不太一样,程序是先声明变量再进行赋值,比如你写的,程序其实是这么执行的,遇到a=5时,其实是先声明了一个全局变量a但是不赋值,然后继续在下午又有一个var a就又声明一个局部变量a然后下面没有其他的声明变量或者函数的代码了才开始进行赋值操作,也就是说赋值操作在最后,而你alert时还没有赋值所以undefined,我是这么理解,其实就是变量声明提升机制
嗯,变量提升,变量声明会提前到最前面,与输写的顺序无关。
一周热门 更多>