使用===运算符测试undefined而不是使用==运算符有什么好处?

时间:2013-09-24 18:17:26

标签: javascript

我通常使用以下测试来测试是否定义了JavaScript变量:

if (typeof a == 'undefined')
    a = 'default value'

但是,我看到很多人建议使用以下代码更安全:

if (typeof a === 'undefined')
    a = 'default value'

我知道=====运营商之间存在差异,但我无法理解为什么typeof a == 'undefined'可能不安全。

请问第一个代码示例不安全或可能导致问题的情况?另外,在第一个语法中使用后一种语法有什么好处?

2 个答案:

答案 0 :(得分:6)

  

我无法理解为什么typeof a == 'undefined'可能不安全

这不是不安全的,完全没问题。 typeof运算符为guaranteed to return a string,因此您将始终比较两个字符串。 abstract equality algorithm的行为与strict equality类似。

答案 1 :(得分:4)

由于typeof a始终是一个字符串,因此=====将始终产生相同的结果,即它们之间没有显着差异(唯一的一个是那个更长)另一个;))。

警告,个人意见:我发现==运算符非常可怕。怎么会有人认为有两个不同的比较运算符是个好主意?没有其他语言可以使两个不同类型的对象相等。疯了吧。因此,人们倾向于一直使用===,因为这是一种很好的做法。所以我想在这种情况下,这只是一种习惯......一个好习惯。