文章目录
- !和!!
- ??
!和!!
逻辑非运算符!
接受一个参数,并按如下运作:
- 将操作数转化为布尔类型:true/false。
- 返回相反的值。
alert( !true ); // false
alert( !0 ); // true
两个非运算!!
用时候用来将某个值转化为布尔类型
alert( !!"non-empty string" ); // true
alert( !!null ); // false
第一个非运算将该值转化为布尔类型并取反,第二个非运算再次取反。最后我们就得到了一个任意值到布尔值的转化。
有一个略显冗长的方式也可以实现同样的效果 —— 一个内建的 Boolean 函数:
alert( Boolean("non-empty string") ); // true
alert( Boolean(null) ); // false
??
空值合并运算符(nullish coalescing operator)的写法为两个问号??
它对待null和undefined的方式类似,当一个值既不是null也不是undefined时,将其称为“已定义的”
a??b
的结果是:
● 如果a是已定义的,则结果为a
● 如果a不是已定义的,则结果为b
与||
比较
或运算符可以与??
运算符相同的方式使用,优先级相同
区别:
● ||
返回第一个真值
● ??
返回第一个已定义的值
||
无法区分false、0、空字符串""和null/undefined
,都是假值
如果只想在变量的值为null/undefined
时使用默认值,也就是说,当该值确实未知或未被设置时,就可以使用??