【发布时间】:2011-08-29 14:58:16
【问题描述】:
谁能给我解释一下if(obj.x == undefined)和if(typeof obj.x == 'undefined')之间的区别
在某些情况下第一个工作正常,但在其他情况下我需要使用第二种方式。
问题
1 - 这两个条件有什么区别?
2 - 是否有最佳做法?
【问题讨论】:
-
通常只检查值的真实性就足够了:
if (obj.x)。 -
undefined是变量,不是常量,可以赋值。因此,一个学派认为第二条路径更安全,因为您无法确定undefined的值。还有另一种观点认为,那些重新定义 undefined 的人应该得到他们所得到的。 -
如果您想知道某个对象上是否存在属性,请执行此
if ( 'x' in obj )或此if ( obj.hasOwnProperty( 'x' ) )。 (如果您不想查找原型链,请使用第二个。 -
@Chris Nielson - 从 1.8.5 开始,
undefined是不可写的
标签: javascript