逻辑运算
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中引入的,用于提供一个默认值。
- 如果左侧的操作数为
null
或undefined
,则返回右侧的操作数;否则返回左侧的操作数。
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中控制程序流程的重要工具,理解它们的行为和使用场景对于编写正确和高效的代码至关重要。