在JavaScript中,||
(逻辑或)和&&
(逻辑与)是逻辑运算符,它们用于根据操作数的值来返回布尔值或执行短路求值(short-circuit evaluation)。
逻辑或(||
)
- 如果第一个操作数的值为真(true),则返回第一个操作数的值,并且不会评估第二个操作数(短路求值)。
- 如果第一个操作数的值为假(false),则返回第二个操作数的值。
在JavaScript中,以下值被认为是false的:
false
0
""
(空字符串)null
undefined
NaN
其余所有的值都被认为是true的。
示例:
let a = 0;
let b = "Hello";
let c = a || b; // c 的值为 "Hello",因为 a 是 false 的
// 短路求值示例
function getValue(obj) {
return obj.value || 'default';
}
let obj = { value: 'custom' };
console.log(getValue(obj)); // 输出 "custom"
obj = {};
console.log(getValue(obj)); // 输出 "default",因为 obj.value 是 undefined,即 false
逻辑与(&&
)
- 如果第一个操作数的值为真(true),则返回第二个操作数的值,并且会评估第二个操作数(短路求值)。
- 如果第一个操作数的值为假(false),则返回第一个操作数的值,并且不会评估第二个操作数(短路求值)。
示例:
let a = true;
let b = "World";
let c = a && b; // c 的值为 "World",因为 a 是 true 的
// 短路求值示例
function checkAndLog(obj) {
if (obj && obj.name) {
console.log(obj.name);
}
}
let person = { name: 'Alice' };
checkAndLog(person); // 输出 "Alice"
checkAndLog(null); // 不输出任何内容,因为 null 是 false 的,短路求值导致不会执行 console.log
注意点
由于||
和&&
在JavaScript中存在短路求值的特性,它们不仅可以用作逻辑运算符,还可以用于变量赋值和条件判断时的代码简化。但是,这种用法有时可能会导致代码的可读性降低,因此在团队项目中使用时需要谨慎。