Javascript 在读取或写入不存在的属性时不会生成异常。读取时,它只是返回undefined
。编写它时,它只是创建属性。
您可以创建自己的函数来测试该属性是否存在,如果不存在则抛出异常(但您必须随时调用该函数),但 JS 不会自行产生异常你要求。
如果要测试 javascript 中的对象上是否存在键,可以将此构造与in
运算符一起使用:
var obj = {};
var key = "test";
if (key in obj) {
// key exists
} else {
// key doesn't exist
}
如果您尝试读取一个不存在的键,您将获得undefined
该值。
var obj = {};
var value = obj.test;
alert(value === undefined);
in
运算符更好地告诉您测试的密钥是否存在,因为undefined
对于undefined
存在的密钥来说是合法值。
在许多情况下,您可以控制键具有的值并且存在的键永远不会具有虚假值,您也可以只检查键是否具有真实值:
var obj = {};
var obj.test = "hello";
if (obj.test) {
// key exists and has a truthy value
}
如果您想确保对象本身具有属性而不是它继承的任何原型,那么您可以这样做:
var obj = {};
var obj.test = "hello";
if (obj.hasOwnProperty(test)) {
// key exists on the object itself (not only on the prototype)
}