TypeOf未定义而不是与undefined进行比较?

时间:2013-05-06 08:07:25

标签: javascript compatibility

在JavaScript中,为什么人们会写typeof myVar == "undefined"而不是myVar == undefined

是出于兼容性原因吗?

2 个答案:

答案 0 :(得分:2)

这是主要原因:

if(a == undefined) console.log('test')
>> ReferenceError: a is not defined
if(typeof a == "undefined") console.log('test')
>> test

但如果你进行这种比较:

if(window.a == undefined) console.log('test')
>> test

因此,如果您使用a作为独立变量,则不能。使用window它是可能的,并且你使用什么方法并不重要,但正如我在评论中所说,使用typeof更安全,因为并非每个变量都属于window范围。 / p>

答案 1 :(得分:1)

因为如果myVar实际上未定义,则typeof运算符不会抛出Error。

myVar == undefined; // Throws a ReferenceError

typeof myVar == "undefined" //True