JavaScript 中的感嘆號運算子
    
    
            Jagathish
    2023年10月12日
    
    JavaScript
    JavaScript Operator
    
 
本教程將介紹 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)。
        Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe