可能重复:
variable === undefined vs. typeof variable === “undefined”
假设undefined
未被篡改,以下是等效的吗?
typeof a === 'undefined'
和
a === undefined
[我问的原因是因为Parsley.js的作者似乎喜欢写'undefined' !== typeof someExpression
。]
答案 0 :(得分:5)
这两种方法几乎相同,只有一种方法:如果typeof
变量未被定义为变量,ReferenceError: a is not defined
将不会引发a
。
说,typeof
方法更加万无一失。
答案 1 :(得分:1)
如果undefined
未被篡改,则它们是等效的。 typeof
优于与未定义直接比较的唯一原因是因为undefined
可以重新定义为undefined = 5
之类的其他内容。另外,正如VisioN指出的那样,当您不检查函数参数的上下文时,可以引发ReferenceError
,而不是a
是defined globally
。为了在直接比较您需要执行的全局上下文中的undefined时不能得到ReferenceError
:
window.a === undefined