問題

如何檢查JavaScript物件或陣列中是否存在特定鍵?

如果鍵不存在,我嘗試訪問它,它會返回false嗎?或丟擲錯誤?

  最佳答案

檢查undefined-ness不是測試金鑰是否存在的準確方法.如果金鑰存在,但值實際上是undefined怎麼辦?

 var obj = { key: undefined };
obj["key"] != undefined // false, but the key exists!
 

您應該使用in運算子:

 "key" in obj // true, regardless of the actual value
 

如果您想檢查金鑰是否存在,請記住使用括號:

 !("key" in obj) // true if "key" doesn't exist in object
!"key" in obj   // ERROR!  Equivalent to "false in obj"
 

或者,如果您想特別測試物件例項的屬性(而不是繼承屬性),則使用hasOwnProperty:

 obj.hasOwnProperty("key") // true
 

對於in,hasOwnProperty和鍵是undefined的效能比較,請參閱這個基準

  相同標籤的其他問題

javascriptobject