老規矩,先上代碼,幫忙指點下變量作用域?
<愛尬聊_百科詞條>
超級轉基因工作狂 22小時前
xuyiming0605 22小時前
泛濫情人 22小時前
(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小時前
嗯,變量提升,變量聲明會提前到最前面,與輸寫的順序無關。