1

可能重复:
variable === undefined vs. typeof variable === “undefined”</a>

假设undefined没有被篡改,下面是等价的吗?

typeof a === 'undefined'

a === undefined

?

[我问的原因是因为Parsley.js的作者似乎喜欢写作'undefined' !== typeof someExpression。]

4

2 回答 2

5

这两种方法几乎相同,除了一个:如果变量未定义为变量,typeof则不会引发。ReferenceError: a is not defineda

说,typeof方法只是更加万无一失。

于 2013-01-27T20:55:45.437 回答
1

undefined是的,如果没有被篡改,它们是等效的。typeof与 undefined 直接比较相比,唯一的原因是因为undefined可以重新定义为其他任何东西,例如undefined = 5. 同样正如 VisioN 所指出的,ReferenceError当您不检查函数参数的上下文而是检查是否a是时,a 可以引发 a defined globally。为了ReferenceError在全局上下文中直接与 undefined 进行比较时不会得到 a ,您需要执行:

window.a === undefined
于 2013-01-27T20:54:30.877 回答