[英]typeof a == 'undefined' vs typeof a === 'undefined'
据我所知,检查未定义变量的首选方法是typeof a === 'undefined'
。
但为什么它更好然后typeof a == 'undefined'
? 它可以在哪些地方失败?
在这种情况下,因为typeof
将总是给你一个字符串:它不是更好(也不是更糟)。 它没有实际的区别。
通常 ,使用===
是首选,因为它会强制您明确您的类型,并使您无法获得JavaScript的类型解析规则不直观时您不期望的结果。
==
和===
之间的区别在于==
执行转换。 所以例如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
返回一个字符串。 但是,操作会更快,因此您的性能可以忽略不计。
因为typeof
只返回字符串,所以将两个字符串与==
进行比较是安全的。
==
和===
之间有很大的区别( 点击这里)
但是,因为typeof将始终返回字符串,所以可以使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.