您好,登錄后才能下訂單哦!
在javascript中執行如下代碼:
var a = 10;
function outer(){
alert(a);
var a = 20;
}
outer();
會產生一個奇怪的結果undefined.其實這是代碼執行的兩個過程及作用域的問題。
代碼執行的兩個過程:
預編譯期:聲明變量、定義函數、創建函數空間
執行期 :變量賦值、語句執行
對于以上代碼,在預編譯期,聲明一個全局變量a,定義函數outer(),聲明一個局部變量a;
在執行期,執行outer(),執行alert(a),該語句會首先在outer()的局部環境中尋找a,于是找 到了預編譯期的第二個a,由于alert(a)在var a = 20 之前,所以此時的這個a 是出于undefined狀 態,所以結果就是undefined了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。