我似乎有不同的方法(严格平等)检查undefined
:
if (something === undefined)
if (typeof something === 'undefined')
if (something === void 0)
在快乐场景中,他们的行为是一样的。换句话说,它们都有效。
但是,考虑到JavaScript的所有怪癖,它们的行为是否完全相同?
如果是,为什么人们选择其他方法而不是第一种?这是某种遗产还是误解?因为第一个在可读性和意图演示中显然是最明显的。
答案 0 :(得分:3)
if (something === undefined)
是标准的正常方式
typeof something === 'undefined'
主要是一种过度防御解决方案,可以追溯到你可以改变window.undefined
的时间。如果您不知道您的变量是否被声明,它的优点是不会引发错误,但我不认为合法代码应该支持声明状态未知的变量的情况。
void 0
(或void anything)是获得undefined
的标准化方式,因此它等同于第一个但无用的。
答案 1 :(得分:0)
undefined
undefined
相同。较旧版本的JS标准允许您更改undefined
的值,因为它只是一个变量。 void 0
为undefined
,更安全。额外的一个:
if (x == null)
。由undefined
测试null
和 undefined == null
,但请记住,undefined !== null
在JavaScript中,类型为'undefined'
,值为undefined
。值undefined
的类型为'undefined'
。