如何在JavaScript对象或数组中检查特定键是否存在?
如果键不存在,尝试访问它时,会返回false还是抛出错误?
检查一个键是否存在不是测试键是否存在的准确方法。如果键存在,但值实际上是undefined
怎么办?
var obj = { key: undefined };
console.log(obj["key"] !== undefined); // false,但键存在!
你应该改用 in
运算符:
var obj = { key: undefined };
console.log("key" in obj); // true,无论实际值是什么
如果你想检查一个键是否不存在,请记住使用括号:
var obj = { not\_key: undefined };
console.log(!("key" in obj)); // 如果对象中不存在 "key",则为 true
console.log(!"key" in obj); // 不要这样做!它等同于 "false in obj"
或者,如果你想特别测试对象实例的属性(而不是继承的属性),请使用 hasOwnProperty
:
var obj = { key: undefined };
console.log(obj.hasOwnProperty("key")); // true
有关 in
、hasOwnProperty
和键为 undefined
之间性能比较的方法,请参见此 基准测试: