检测未定义的对象属性

检查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
}

我相信这个话题有很多不正确的答案。 与普遍的看法相反,“未定义” 不是 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表示变量值被定义并设置为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
    
    链接地址: http://www.djcxy.com/p/519.html

    上一篇: Detecting an undefined object property

    下一篇: How to exit the Vim editor?