JavaScript 中 || 和 && 操作符的返回值是什么?

2024-07-31 21:33:33 125
在 JavaScript 中,`||`(逻辑或)和 `&&`(逻辑与)操作符不仅是逻辑运算符,还具有返回值的特性。这些操作符遵循“短路”规则,并且它们返回的并不一定是布尔值,而是参与运算的值之一。

||(逻辑或)操作符

|| 操作符用于逻辑“或”运算。它会从左到右依次求值,直到找到第一个真值(truthy)并返回它;如果所有操作数都为假值(falsy),则返回最后一个操作数。

  • 真值(truthy):在布尔上下文中,被认为是 true 的值,例如非空字符串、非零数字、对象等。
  • 假值(falsy):在布尔上下文中,被认为是 false 的值,如 false0""(空字符串)、nullundefinedNaN

示例

console.log(0 || "Hello");      // 输出: "Hello" (0 是 falsy)
console.log(false || 42);       // 输出: 42 (false 是 falsy)
console.log(null || "World");   // 输出: "World" (null 是 falsy)
console.log("Hi" || "World");   // 输出: "Hi" ("Hi" 是 truthy)
console.log(undefined || null); // 输出: null (都为 falsy,返回最后一个)

&&(逻辑与)操作符

&& 操作符用于逻辑“与”运算。它会从左到右依次求值,直到找到第一个假值(falsy)并返回它;如果所有操作数都是真值(truthy),则返回最后一个操作数。

示例

console.log("Hello" && "World"); // 输出: "World" (都为 truthy)
console.log(0 && "Hello");       // 输出: 0 (0 是 falsy)
console.log("Hi" && 0);          // 输出: 0 (0 是 falsy)
console.log(42 && "Hi");         // 输出: "Hi" (都为 truthy)
console.log(null && "Hello");    // 输出: null (null 是 falsy)

总结

  • || 操作符返回第一个真值,或者如果没有真值,则返回最后一个假值。
  • && 操作符返回第一个假值,或者如果没有假值,则返回最后一个真值。

这些运算符常用于设置默认值(短路赋值),例如:

let name = userInput || "Default Name";

在这个例子中,如果 userInput 为假值,则 name 将被赋值为 "Default Name"