文章目錄
- !和!!
- ??
!和!!
邏輯非運算符!
接受一個參數,并按如下運作:
- 將操作數轉化為布爾類型: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
時使用默認值,也就是說,當該值確實未知或未被設置時,就可以使用??