(function(){ a = 5; alert(window.a); var a = 10; alert(a); })();
這段代碼中的alert,為什么第一個是返回的undefined.按說,不要VAR的a變量,不就是全局變量嗎?
程序執(zhí)行順序跟你想的不太一樣,程序是先聲明變量再進行賦值,比如你寫的,程序其實是這么執(zhí)行的,遇到a=5時,其實是先聲明了一個全局變量a但是不賦值,然后繼續(xù)在下午又有一個var a就又聲明一個局部變量a然后下面沒有其他的聲明變量或者函數(shù)的代碼了才開始進行賦值操作,也就是說賦值操作在最后,而你alert時還沒有賦值所以undefined,我是這么理解,其實就是變量聲明提升機制
變量提升啊,下面有var a 啊,你知道變量提升嗎?
嗯,變量提升,變量聲明會提前到最前面,與輸寫的順序無關(guān)。
吾愛知道 2024 © 吾愛知道鄂ICP備2022002577號-1
站內(nèi)文章地圖 站內(nèi)問答地圖 站內(nèi)作者地圖 站點標簽地圖 站點地圖 站點標簽 站點題庫