如何檢查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
的效能比較,請參閱這個基準