我们经常检查对象是否为空且未定义。我总是使用条件if (obj !== null && obj !== undefined)。几天前,我的同事向我展示了双反演!!的语法,现在我可以使用条件if (!!obj)了。这种语法比较少。
我不是一个只学习js的人,但我有一点兴趣。
那么,这两种对象验证方法之间有什么区别吗?性能差异?语义差异?有什么不同吗?
发布于 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。发布于 2016-02-02 10:26:05
!!foo用于强制将一个值强制放入其布尔值。在我的经验中,这通常用于希望返回包含敏感数据的值的值的API中。例如,要返回是否输入密码,您可以使用return !!password而不是return password。
在此基础上,对于您可以想到的许多值,if (!!obj)与if (obj !== null && obj !== undefined)并不相同!比如false。
https://stackoverflow.com/questions/35150737
复制相似问题