typeof a =='undefined'vs typeof a ==='undefined'

时间:2013-04-22 11:14:31

标签: javascript undefined typeof

据我所知,检查未定义变量的首选方法是typeof a === 'undefined'

但为什么它比typeof a == 'undefined'更好?它可以在哪些地方失败?

4 个答案:

答案 0 :(得分:9)

在这种情况下,由于typeof总会给你一个字符串:它不是更好(也不是更糟)。它没有实际意义。

常规中,首选使用===是因为它会强制您明确您的类型,并使您无法获得JavaScript的类型解析规则不直观时您不期望的结果。

答案 1 :(得分:5)

=====之间的区别在于==执行了转化。因此,例如1将是=='1',但不是==='1'。检查undefined时首选该方法的原因是因为在JavaScript中存在已知的比较陷阱。

最常见的:

''        ==   '0'           //false
0         ==   ''            //true
0         ==   '0'           //true
false     ==   'false'       //false
false     ==   '0'           //true
false     ==   undefined     //false
false     ==   null          //false
null      ==   undefined     //true
" \t\r\n" ==   0             //true

因此,对于===,您可以避免null == undefined问题,这可能导致难以发现的错误。这就是您应该使用==代替===的原因。由于===未在幕后执行任何转换,因此操作速度也更快。

在这种特定情况下,它不会产生影响。无论您使用typeof a == 'undefined'还是typeof a === 'undefined',输出都是相同的,没有错误。那是因为typeof返回一个字符串。但是,操作速度会更快,因此性能提升可以忽略不计。

答案 2 :(得分:3)

因为typeof只返回字符串,所以将两个字符串与==进行比较是安全的。

答案 3 :(得分:1)

=====之间存在很大差异(Check out here)

但是,由于typeof 总是返回字符串,所以可以使用它。