JavaScript 逻辑运算符

2025年3月2日 | 5 分钟阅读

逻辑运算符是这些工具之一;它们对于做出选择、评估表达式和操作执行流程可能很重要。在处理布尔值时,逻辑运算符在确保条件得到验证和结果得到确定方面起着至关重要的作用。通过这些运算符JavaScript 现在可以有效地执行比较、条件分支和错误处理等操作。

  • 逻辑与 (&&)
  • 逻辑或 (||)
  • 逻辑非 (!)
  • 空值合并 (??)

1. 逻辑与 (&&)

当评估多个条件或表达式时,逻辑与 (&&) 运算符用于确定是否满足所有条件并返回布尔值(真或假)。确切地说,当所有操作数都为真时,此运算符才返回真。否则,整个表达式返回假。

expression1 && expression2

在上面的语法中,expression1 和 expression2 代表布尔表达式或值。在验证它们都是真之后,如果两个表达式都为真,则运算符返回真。

行为

  • 如果 expression1 的计算结果为假,则评估会进行短路并立即停止。然后它返回假,而不评估 expression2。
  • 如果 expression1 的计算结果为真,则运算符会评估 expression2。expression2 的评估决定了最终结果。

当需要同时满足多个条件时,例如在复杂的决策制定过程、表单验证或身份验证中,此运算符特别有用。

在此示例中,只有年满 18 岁的参与者才能被允许进入。如果任一条件不满足,则拒绝进入。

短路求值:JavaScript 中的逻辑运算符使用短路求值来提高效率。这意味着一旦理解了表达式的最终结果,就会立即停止进一步的评估。使用此运算符时,如果第一个操作数为假,则结果已经确定;因此,无需评估第二个操作数。

在这种情况下,由于 x 为假,JavaScript 不会评估 y。这可以减少计算开销并提高整体性能。

2. 逻辑或 (||)

如果至少有一个操作数为真,则可以使用此运算符进行确定。如果两个操作数都为真,则整个表达式返回真;仅当两个操作数都为假时才返回假。当有多种满足条件的方法时,此运算符非常有用。

在此语法中,运算符首先评估 expression1。如果 expression1 为真,则运算符返回真并忽略 expression2(短路)。如果 expression1 为假,则运算符评估 expression2,最终结果由 expression2 的评估决定。

行为

  • 如果 expression1 为真,JavaScript 会进行短路(立即返回真),而不会评估 expression2。
  • 如果 expression1 不为真,则运算符会评估 expression2。如果 expression2 为真,则最终结果为真;否则,为假。

在此示例中,如果用户具有授权或是一名管理员,则允许访问。通过 OR 运算符,可以在一个简洁的语句中检查多个访问权限级别或条件。

短路求值:它们也使用短路求值。如果第一个表达式为真,JavaScript 将不会评估第二个表达式,因为最终结果已经确定为真。

这是一个有用的功能,可以避免在声明早期满足条件时调用函数或执行不必要的计算。

计算,而条件在声明的早期就已满足。

3. 逻辑非 (!)

逻辑非 (!) 运算符可以用于否定或反转布尔表达式。如果操作数为真,!将其转换为假;如果操作数为假,则将其转换为真。逻辑非运算符是反转条件和简化公式的一个有用工具。

对表达式进行求值,并获得反转的布尔值。

行为

  • 如果 expression 为真,则 !expression 返回假。
  • 如果 expression 为假,则 !expression 返回真。

当您想确保一个条件为假然后再继续,或者当您想验证它不存在时,此运算符非常有用。

在此示例中,仅当 isLoggedIn 为假时,通知才会要求用户登录。!运算符使程序员能够轻松处理条件的逆否命题。

双重否定 (!!)

使用双重否定 (!!) 将任何值转换为其布尔等效值,这是一种常用的 JavaScript 技巧。第一次否定会将值转换为布尔值,然后第二次否定会将其恢复到原始状态,返回 true 或 false。

在此示例中,非空字符串 "Hello" 通过双重否定变为真。这种方法通常用于确定一个值是真还是假。

4. 空值合并 (??)

空值合并 (??) 运算符是 ES2020 中引入的 JavaScript 中较新的一个添加项。在第一个操作数为 null 或 undefined 的情况下,它会返回一个默认值。此运算符与将所有“假”值(如零、false 或 "")视为默认值的情况类似,但有一个重要区别:?? 仅将 null 和 undefined 视为默认值触发器。

根据此语法,如果 expression1 既不是 null 也不是 undefined,则运算符返回 expression1。否则,返回 expression2。

行为

  • 如果 expression1 为 null 或 undefined,则将评估并返回 expression2。
  • 如果 expression1 是其他任何值(包括 0 或 false 等假值),则运算符返回 expression1。

在此示例中,由于 user 为 null,运算符返回 defaultUser。当您想提供默认值而不影响 0 或 false 等有效假值时,空值合并运算符非常有用。

非布尔值和逻辑运算符

虽然逻辑运算符通常与布尔值一起使用,但由于 JavaScript 的类型转换特性,它们也可以应用于非布尔值。在此示例中,JavaScript 将操作数评估为布尔值。下面列出的值被视为假:

  • 0
  • ""(空字符串)
  • Null
  • 未定义
  • NaN

所有其他值都被视为真。

在第一个示例中,由于 "" 为假,OR 运算符返回 "default"。在第二个场景中,由于 0 为假,AND 运算符返回 0 而不评估第二个操作数。