javascript變數的宣告預編譯期間

antzone發表於2017-04-13

本章節介紹一個知識點,那就是使用var宣告一個變數的時候,變數的宣告是在預編譯期間。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var tmp = new Date();
function f(){
  console.log(tmp);
  if (false){
    var tmp = "螞蟻部落";
  }
}
f()

上面程式碼的輸出值是undefined。

程式碼中即便if語句中的程式碼不會執行,但是變數tmp在預編譯器期間依然會被宣告,也就會被提升。

但是又由於條件永遠是false,所以tmp變數並不會被賦值為"螞蟻部落"。

所以最終的輸出值undefined,而不是時間日期。


相關文章