协慌网

登录 贡献 社区

检测未定义的对象属性

检查 JavaScript 中的对象属性是否未定义的最佳方法是什么?

答案

使用:

if (typeof something === "undefined") {
    alert("something is undefined");
}

如果具有某些属性的对象变量可以使用如下所示的相同内容:

if (typeof my_obj.someproperties === "undefined"){
    console.log('the property is not available...'); // print into console
}

由于 ECMAScript 5, undefined不能被覆盖,所以my_obj === undefined也可以,但只有my_obj存在时才my_obj 。这可能是也可能不需要,因为如果你需要这个语义,你也可以使用null (请参阅JavaScript 中 null 和 undefined 之间的区别是什么? )。但是对于对象属性,无论属性是否存在,它都可以工作。

我相信这个话题有很多不正确的答案。与普遍看法相反,“undefined” 不是 JavaScript 中的关键字,实际上可以为其分配值。

正确的代码

执行此测试的最强大方法是:

if (typeof myVar === "undefined")

这将始终返回正确的结果,甚至可以处理未声明myVar的情况。

退化代码。不使用。

var undefined = false;  // Shockingly, this is completely legal!
if (myVar === undefined) {
    alert("You have been misled. Run away!");
}

另外, myVar === undefined会在 myVar 未声明的情况下引发错误。

在 JavaScript 中有null并且未定义 。它们有不同的含义。

  • undefined表示尚未定义变量值; 不知道它的价值是多少。
  • null表示定义变量值并设置为 null(没有值)。

Marijn Haverbeke 在他的免费在线书 “ Eloquent JavaScript ”(强调我的)中说:

还有一个类似的值 null,其含义是 “此值已定义,但它没有值”。 undefined 和 null 之间的意义差异主要是学术性的,通常不是很有趣。 在实际程序中,通常需要检查某些东西是否 “有价值”。在这些情况下,可以使用表达式 == undefined,因为即使它们不是完全相同的值,null == undefined 也会产生 true。

所以,我想检查某些内容是否未定义的最佳方法是:

if (something == undefined)

希望这可以帮助!

编辑:为了响应您的编辑,对象属性应该以相同的方式工作。

var person = {
    name: "John",
    age: 28,
    sex: "male"
};

alert(person.name); // "John"
alert(person.fakeVariable); // undefined