对象不为 null,也不未定义.更好的是 - 双重反转'!!' 或 JavaScript 中的严格等价性 '!=='
Object is not null and not undefined. What is better - double inversion `!!` or strict equillity `!==` in JavaScript
我们经常检查我们的对象是否不为空且未定义。我总是使用条件if (obj !== null && obj !== undefined)
。几天前,我的同事向我展示了双反转!!
的语法,现在我可以使用条件if (!!obj)
。此语法较少。
我不是一个只学习js的人,但我有一点兴趣。
那么这两种对象验证方式之间有什么区别吗?性能差异?语义差异?有什么区别吗?
没有任何
特别好的理由使用if (!!obj)
,因为它等同于if (obj)
。 但是,!!obj
和obj !== null && obj !== undefined
做不同的事情,您应该使用最合适的方法。
-
obj !== null && obj !== undefined
(惊喜,惊喜)导致null
和undefined
false
。 -
!!obj
会导致任何虚假的false
,包括null
、undefined
、''
、0
、NaN
和false
。
!!foo
用于强制将值强制转换为其布尔值。根据我的经验,这通常用于想要为包含敏感数据的值返回布尔值的 API。例如,要返回是否输入了密码,您可以说return !!password
而不是return password
。
继续说,对于您能想到的许多价值观,if (!!obj)
与if (obj !== null && obj !== undefined)
不同!比如false
.
相关文章:
- JavaScript未定义的函数外部JavaScript文件
- 函数中的Javascript未定义数组
- Javascript-未定义ReferenceError x(函数)
- JSON JavaScript 未定义的变量问题
- Javascript 未定义错误:引用错误:未定义 ALT
- Javascript 未定义函数错误
- 通过使用JavaScript“未定义”(变量),我们可以释放系统内存
- javascript:未定义获取对象
- JavaScript 未定义的变量从页面类中获取值
- Javascript:未定义不是函数错误
- Javascript 未定义的函数错误
- JavaScript“未定义提示符”引用错误
- Javascript未定义错误:“this”为null
- VS中出现JavaScript未定义错误
- Javascript未定义的变量为空
- 在regex拆分过程中会出现javascript未定义元素
- Javascript未定义、空字符串和if语句
- 使用prototype[javascript]未定义的结果
- 匿名函数中的JavaScript未定义变量
- JavaScript:未定义的值赋值