逻辑非 (!)
逻辑非(!)(逻辑补、否定)运算符将真值变为假值,反之亦然。它通常与布尔(逻辑)值一起使用。当与非布尔值一起使用时,如果其单个操作数可以转换为 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 |
浏览器兼容性
加载中…