来源:https://cloud.tencent.com/developer/article/2317805
JavaScript 中有四个常用的运算符,分别是 !!、||、?.、??,它们都可以用于处理值的真假性和空值情况,但它们的行为和逻辑有所不同。本文将介绍这四个运算符的定义、功能和示例,帮助你理解掌握它们的用法。
!! 用法
!!
对一个值进行两次逻辑非运算,第一次逻辑非运算会将值转换为布尔值,然后取反,第二次逻辑非运算会再次取反,得到原始的布尔值。!!
可以用于判断一个值是否为真值或者假值。 例如,变量x
是一个真值,如true、
1
、"hello"
等,那么!!x
会返回true
; 如果x
是一个假值,例如false
、0
、""
等,!!x
则会返回false
。
?.
和 ??
的区别
?.
是可选链运算符,用于访问一个可能为空或者未定义的对象的属性,如果对象为空或者未定义,它会返回undefined
,而不会抛出错误。 例如,如果obj
是一个对象,那么obj?.name
会返回obj
的name
属性,如果obj
是null
或者undefined
,那么obj?.name
会返回undefined
。??
是空值合并运算符,它用于提供一个默认值,当左边的表达式为null
或者undefined
时,它会返回右边的表达式的值,否则返回左边的表达式的值。例如,如果x
是一个变量,那么x ?? 0
会返回x
的值,如果x
是null
或者undefined
,那么x ?? 0
会返回0
。
??
和 ||
的区别
??
只会在左边的表达式为null
或者undefined
时,返回右边的表达式的值,否则返回左边的表达式的值。这意味着,如果左边的表达式是一个假值,例如false
、0
、""
等,它仍然会被返回。||
会在左边的表达式为任何假值时,返回右边的表达式的值,否则返回左边的表达式的值。这意味着,如果左边的表达式是一个真值,例如true
、1
、"hello"
等,它会被返回。
所以,??
和 ||
的用法取决于你想要实现的逻辑。一般来说,如果你只想排除 null
或者 undefined
,那么使用 ??
比较好;如果你想排除所有假值,那么使用 ||
比较好。