typeof undefined。 哪个更快更好?

这个问题在这里已经有了答案:

  • 如何检查一个对象是否在JavaScript中有属性? 22个答案
  • 使用`in`有什么好处,而不是object.prop? 1个答案

  • 如果你正在寻找一种方法来检查成员的存在,你应该in运营商中使用

    if ("b" in a) {
        ...
    }
    

    错误c is not defined ,因为在程序中的任何地方都没有定义c

    typeof ab将返回什么类型的数据,它存储在ab 。 如果b实际存在并且它实际上保持undefined的值,该怎么办? typeof ab!ab将评估为真值。 所以,他们不应该用于成员存在检查。

    请检查这个答案知道为什么in应首选成员存在。


    我会使用in运算符

    if ('b' in a) {
        ...
    }
    

    我会使用它,因为它完全是为了检查对象中是否存在属性,并且因为它比其他(IMO)更可读。

    然而, 哪一个更快并不重要,因为你会进行微观优化(除非你的操作数百万或数十亿次)。

    干杯

    PS: c is not defined发生,因为用cb你试图访问一个未定义变量的b成员( c


    我不确定你想要达到什么,但有两个问题。 第一部分是检查在对象中定义的属性。 第一个if检查是否定义了属性的类型,但它可能是故意的“未定义”。

    用于检查对象是否具有该属性。

    if(b.hasOwnProperty("c")) {
    
    }
    

    如果你想在整个原型链“查找”的属性,然后使用in

    if ("c" in b) {
    
    }
    

    否则,检查bc为“未定义”意味着由“bc”返回的值是“未定义”类型。 这并不意味着b有或没有财产“c”。

    第二个块失败,因为“c”没有在全局范围中定义。 您无法访问会导致错误的未定义对象的属性。

    注意

    如果你没有原型链,在大多数情况下,hasOwnProperty应该更快。

    链接地址: http://www.djcxy.com/p/27319.html

    上一篇: typeof undefined. Which is faster and better?

    下一篇: checking if inputs in a form are set using nodejs