据我所知,检查未定义变量的首选方法是typeof a === 'undefined'。
但是为什么它比typeof a == 'undefined'更好呢?它在哪些地方会失败?
发布于 2013-04-22 19:16:12
在这种情况下,因为typeof总是会给你一个字符串:它不是更好(也不是更坏)。这并没有实际的区别。
通常,最好使用===,因为它迫使您显式地说明您的类型,并使您避免在JavaScript的类型解析规则不直观时获得意想不到的结果。
发布于 2013-04-22 19:21:02
==和===之间的区别在于==执行转换。例如,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问题,这可能会导致难以找到的bug。这就是为什么你应该使用==而不是===。因为===不会在幕后执行任何转换,所以它也是一个更快的操作。
在这种特定的情况下,它不会在效果方面有所不同。无论你使用的是typeof a == 'undefined'还是typeof a === 'undefined',输出都是一样的,没有bug。这是因为typeof返回一个字符串。但是,操作速度会更快,因此性能提升可以忽略不计。
发布于 2013-04-22 19:16:44
因为typeof只返回字符串,所以使用==比较两个字符串是安全的。
https://stackoverflow.com/questions/16145794
复制相似问题