typeof undefined。 哪个更快更好?
这个问题在这里已经有了答案:
如果你正在寻找一种方法来检查成员的存在,你应该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