1

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

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

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

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

我知道=====运算符之间的区别,但我无法理解为什么typeof a == 'undefined'可能不安全。

您能否提出第一个代码示例不安全或可能导致问题的情况?另外,使用后一种语法比第一种有什么优势?

4

2 回答 2

6

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

这不是不安全的,完全没问题。该typeof运算符保证返回一个 string,因此您将始终比较两个字符串。抽象相等算法的行为就像严格相等

于 2013-09-24T18:24:05.550 回答
4

因为typeof a它总是一个字符串==,并且===总是产生相同的结果,即它们之间没有显着差异(唯一的一个是一个比另一个长;))。

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

于 2013-09-24T18:23:29.503 回答