首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >==的类型“undefined”与===的类型“undefined”

==的类型“undefined”与===的类型“undefined”
EN

Stack Overflow用户
提问于 2013-04-22 19:14:31
回答 4查看 1.7K关注 0票数 5

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-22 19:16:12

在这种情况下,因为typeof总是会给你一个字符串:它不是更好(也不是更坏)。这并没有实际的区别。

通常,最好使用===,因为它迫使您显式地说明您的类型,并使您避免在JavaScript的类型解析规则不直观时获得意想不到的结果。

票数 10
EN

Stack Overflow用户

发布于 2013-04-22 19:21:02

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

最常见的:

代码语言: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返回一个字符串。但是,操作速度会更快,因此性能提升可以忽略不计。

票数 5
EN

Stack Overflow用户

发布于 2013-04-22 19:16:44

因为typeof只返回字符串,所以使用==比较两个字符串是安全的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16145794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档