邏輯非 (!)
邏輯非(!)(邏輯補、否定)運算子將真值變為假值,反之亦然。它通常與布林(邏輯)值一起使用。當與非布林值一起使用時,如果其單個運算元可以轉換為 true,則返回 false;否則,返回 true。
試一試
const a = 3;
const b = -2;
console.log(!(a > 0 || b > 0));
// Expected output: false
語法
js
!x
描述
如果其單個運算元可以轉換為 true,則返回 false;否則,返回 true。
如果一個值可以轉換為 true,則該值被稱為真值 (truthy)。如果一個值可以轉換為 false,則該值被稱為假值 (falsy)。
可以轉換為 false 的表示式示例有:
null;NaN;0;- 空字串(
""或''或``); undefined.
儘管 ! 運算子可以與非布林值運算元一起使用,但它仍然可以被視為布林運算子,因為其返回值始終可以轉換為布林基本型別。要將其返回值(或通常的任何表示式)顯式轉換為相應的布林值,請使用雙重非運算子(!!)或Boolean建構函式。
示例
使用非運算子
以下程式碼展示了 !(邏輯非)運算子的示例。
js
!true; // !t returns false
!false; // !f returns true
!""; // !f returns true
!"Cat"; // !t returns false
雙重非(!!)
可以連續使用兩個非運算子,以顯式強制將任何值轉換為相應的布林基本型別。轉換基於值的“真值”或“假值”(請參閱真值和假值)。
同樣的轉換可以透過Boolean()函式完成。
js
!!true; // !!truthy returns true
!!{}; // !!truthy returns true: any object is truthy…
!!new Boolean(false); // … even Boolean objects with a false .valueOf()!
!!false; // !!falsy returns false
!!""; // !!falsy returns false
!!Boolean(false); // !!falsy returns false
非運算子之間的轉換
以下涉及布林值的操作
js
!!bCondition
始終等於
js
bCondition
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-logical-not-operator |
瀏覽器相容性
載入中…