js如何判斷一個物件是否存在

螞蟻小編發表於2017-04-14

本章節介紹一下如何判斷一個物件是否存在,從表面看起來簡單,其實裡面還是有很多需要注意的細節。

先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
if (!obj) {
  obj = {}
}

上面的程式碼會報錯,因為obj並沒有宣告就進行取值操作。

程式碼修改如下:

[JavaScript] 純文字檢視 複製程式碼
if (!obj) {
  var obj = {}
}

上面程式碼正確,因為javascript是先解析後執行,在解析期間,變數宣告會提升,所以上面程式碼與下面是等價:

[JavaScript] 純文字檢視 複製程式碼
var obj
if (!obj) {
  obj = {}
}

再來看一個判斷方式:

[JavaScript] 純文字檢視 複製程式碼
if (typeof obj == "undefined") {
  obj = {};
}

使用typeof即便是沒有使用var宣告obj也不會報錯,不過最好在宣告obj的時候使用var

[JavaScript] 純文字檢視 複製程式碼
if (typeof obj == "undefined") {
  var obj = {};
}

特別說明:在ES2015中,由於暫時性死區的存在,所以可能會報錯,具體參閱ES2015 let命令一章節。

相關文章