首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象不是空,也不是未定义的。什么是更好的-双反演`!或严格的均匀度`!==` in JavaScript

问对象不是空,也不是未定义的。什么是更好的-双反演`!或严格的均匀度`!==` in JavaScript
EN

Stack Overflow用户
提问于 2016-02-02 10:22:11
回答 2查看 374关注 0票数 2

我们经常检查对象是否为空且未定义。我总是使用条件if (obj !== null && obj !== undefined)。几天前,我的同事向我展示了双反演!!的语法,现在我可以使用条件if (!!obj)了。这种语法比较少。

我不是一个只学习js的人,但我有一点兴趣。

那么,这两种对象验证方法之间有什么区别吗?性能差异?语义差异?有什么不同吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-02 10:26:25

没有任何特别好的理由使用if (!!obj),因为它等同于if (obj)。不过,!!obj和obj !== null && obj !== undefined做的事情不同,您应该使用最合适的方法。

  • obj !== null && obj !== undefined (惊喜,惊喜)为null和undefined带来了false。
  • !!obj对任何错误都会导致false,包括null、undefined、''、0、NaN和false。
票数 3
EN

Stack Overflow用户

发布于 2016-02-02 10:26:05

!!foo用于强制将一个值强制放入其布尔值。在我的经验中,这通常用于希望返回包含敏感数据的值的值的API中。例如,要返回是否输入密码,您可以使用return !!password而不是return password。

在此基础上,对于您可以想到的许多值,if (!!obj)与if (obj !== null && obj !== undefined)并不相同!比如false。

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

https://stackoverflow.com/questions/35150737

复制
相关文章

相似问题

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