逻辑运算

JavaScript中的逻辑运算符用于根据逻辑条件组合多个表达式。以下是JavaScript中逻辑运算符的小结:

1. 逻辑非 (!)

  • 逻辑非运算符用于取反一个布尔值。
  • 如果表达式结果为true,则!运算后结果为false;如果结果为false,则结果为true
1console.log(!true);  // false
2console.log(!false); // true
3console.log(!0);     // true
4console.log(!"");    // true

2. 逻辑与 (&&)

  • 逻辑与运算符用于组合两个布尔表达式。
  • 如果两个表达式都为true,则结果为true;否则结果为false
  • 它是短路运算符,如果第一个表达式为false,则不会计算第二个表达式。
1console.log(true && true);  // true
2console.log(true && false); // false
3console.log(false && true); // false
4console.log(false && false); // false
5
6console.log(0 && "Hello"); // 0
7console.log(1 && "Hello");  // "Hello"

3. 逻辑或 (||)

  • 逻辑或运算符用于组合两个布尔表达式。
  • 如果两个表达式中至少有一个为true,则结果为true;否则结果为false
  • 它是短路运算符,如果第一个表达式为true,则不会计算第二个表达式。
1console.log(true || true);   // true
2console.log(true || false);  // true
3console.log(false || true);  // true
4console.log(false || false); // false
5
6console.log(0 || "Hello");  // "Hello"
7console.log(1 || "Hello");   // 1

4. 逻辑空或 (??)

  • 逻辑空或运算符是ES2020中引入的,用于提供一个默认值。
  • 如果左侧的操作数为nullundefined,则返回右侧的操作数;否则返回左侧的操作数。
1console.log(undefined ?? "Default"); // "Default"
2console.log("Text" ?? "Default");     // "Text"
3console.log(null ?? 0);              // 0

5. 逻辑异或 (^^)

  • 逻辑异或运算符比较两个布尔表达式。
  • 如果两个表达式的布尔值相同(都是true或都是false),则结果为false;如果不同,则结果为true
1console.log(true ^^ true);  // false
2console.log(true ^^ false); // true
3console.log(false ^^ true); // true
4console.log(false ^^ false); // false

使用场景

  • 条件判断:在if语句和其他条件逻辑中使用逻辑运算符来组合多个条件。
  • 默认值:使用逻辑空或运算符??来提供变量的默认值。
  • 短路运算:利用逻辑与&&和逻辑或||的短路特性来编写更高效的代码。

注意事项

  • 短路特性:了解逻辑与和逻辑或的短路特性,可以避免不必要的计算和潜在的错误。
  • 操作数类型:逻辑非会将操作数转换为布尔值,而逻辑与和逻辑或会根据操作数的类型和值来决定最终结果。
  • 逻辑异或:逻辑异或运算符在JavaScript中使用较少,通常用于布尔值的比较。

示例代码

 1// 逻辑非
 2console.log(!null);  // true
 3console.log(!undefined); // true
 4console.log(!1);     // false
 5
 6// 逻辑与
 7if (isValid && hasPermission) {
 8  console.log("Access granted");
 9}
10
11// 逻辑或
12const value = exists || "default";
13console.log(value);
14
15// 逻辑空或
16const result = data ?? "Not available";
17console.log(result);
18
19// 逻辑异或
20console.log(true ^^ false); // true

逻辑运算符是JavaScript中控制程序流程的重要工具,理解它们的行为和使用场景对于编写正确和高效的代码至关重要。