JavaScript 中的感嘆號運算子
Jagathish
2023年1月30日
2022年5月10日
本教程將介紹 JavaScript 中邏輯非(!
)運算子的行為和使用。
這 !
運算子將運算元轉換為布林值並返回轉換後的值的倒數。
語法
inverse = !expression
當我們應用!
運算子到假值的時候,我們得到 true
作為結果。虛假值包括 - false
、0
、-0
、0n
、""
、null
、undefined
和 NaN
。
當我們應用!
運算子到真值,我們得到假
作為結果。除了提到的虛假值之外,所有值都是真實值。
示例 1
// boolean values
console.log("!true =>", !true); // returns false
console.log("!false =>", !false); // returns true
輸出:
!true => false
!false => true
在上面的程式碼中,
- 應用
!
運算子為true
值,返回false
。 - 應用
!
運算子為false
值,則返回true
。
示例 2
// string values
console.log("!('') =>", !('')); // returns true
console.log("!('truthy_string') => ", !('truthy_string')); // returns false
輸出:
!('') => true
!('truthy_string') => false
在上面的程式碼中,
- 應用
!
運算子為空字串(空字串表示假值),返回true
。 - 應用
!
運算子對非空字串(非空字串表示真值),返回false
。
示例 3
// number values
console.log("!0 => ", !0); // returns true
console.log("!100 => ", !100); // returns false
輸出:
!0 => true
!100 => false
在上面的程式碼中,
- 應用
!
運算子到0
(0
表示假值),返回true
。 - 應用
!
運算子到100
(非零值表示truthy
值),返回false
。
示例 4
console.log("!null => ", !null); // true
console.log("!undefined => ", !undefined); // true
console.log("!NaN => ", !NaN); // true
輸出:
!null => true
!undefined => true
!NaN => true
我們已經應用了!
運算子為假值。對於所有情況,我們得到了真實的結果。
示例 5
function returnsTruthyValue() {
return 100;
}
function returnsFalsyValue() {
return 0;
}
// apply ! to the return value
console.log("!returnsTruthyValue() =>", !returnsTruthyValue()); // false
console.log("!returnsFalsyValue() =>", !returnsFalsyValue()); // true
輸出:
"!returnsTruthyValue() => false
"!returnsFalsyValue() => true
在上面的程式碼中,我們建立了兩個函式。
returnsTruthyValue
函式將返回 100(真實值)。returnsFalsyValue
函式將返回 0(假值)。
當我們在函式呼叫中應用!
時,!
將應用於函式返回的值。 !returnsTruthyValue()
將適用 !
運算子到 returnsTruthyValue
函式返回的值。所以,
- 對
returnsTruthyValue()
函式應用!
運算子,將返回false
。 - 在
returnsFalsyValue()
函式中使用!
運算子將返回true
。
JavaScript 中的雙非運算子!!
!!
運算子將為真值返回 true
,為假值返回 false
。此運算子用於將值轉換為布林值。
語法
!! expression
!!
將執行兩個操作。
- 將表示式的值轉換為布林值並對其應用逆運算。
- 同樣,逆向應用於該值。
例子
console.log("!!true =>", !!true) // true
console.log("!! 0 =>", !! 0) // false
輸出:
!!true => true
!! 0 => false
在上面的程式碼中,
- 將
!!
運算子應用於true
,它將首先將true
轉換為false
,然後再次將false
轉換為true
。 - 將
!!
運算子應用於0
,它將首先將0
轉換為布林值(0
轉換為false
)並對其應用逆運算(現在該值將是true
)。然後再一次,將反轉應用於先前反轉的值(現在該值將是false
)。