之前我们学习过两个运算符,and和OR,但是我们之前还没有发挥出他们全部的潜力;它们也可以用于短路求值;
OR ||
可以使用任何值,也可以返回任何值(不仅仅是布尔型),我们成为短路求值
console.log(3 || 'mark');
使用||时,如果第一个值是真,则不会返回第二个值,这就是我们所说的短路
根据上面的说法,我们再看几个例子
console.log(3 || 'mark');
console.log('' || 'jonas');
console.log(true || 0);
console.log(undefined || null);
and &&
如果第一个值是flase,则会立即返回他,不会去评估下一个值
console.log(0 && 'IT知识一享');
按照上面所说我们在举几个例子,方便理解
console.log(0 && 'IT知识一享');
console.log(7 && 'IT知识一享');
console.log('hello' && 23 && null && 'IT知识一享');
总结
JavaScript中的短路求值是指在逻辑表达式中,当第一个操作数能够确定整个表达式的结果时,就停止对后续操作数的求值并返回结果。短路求值使用逻辑运算符 && 和 || 来实现。
当使用逻辑与运算符 &&(双与符号)时,如果第一个操作数为假(Falsy),则整个表达式的结果将为假,并且不再计算后续的操作数,直接返回第一个操作数。只有当第一个操作数为真(Truthy)时,才会继续计算并返回第二个操作数的值。
例如:
javascriptCopy Codevar result = true && false;
console.log(result); // 输出 false
result = true && true;
console.log(result); // 输出 true
var value = null && "Hello";
console.log(value); // 输出 null,因为第一个操作数为假
value = "Goodbye" && "Hello";
console.log(value); // 输出 Hello,因为两个操作数都为真,返回最后一个操作数的值
当使用逻辑或运算符 ||(双竖线符号)时,如果第一个操作数为真(Truthy),则整个表达式的结果将为真,并且不再计算后续的操作数,直接返回第一个操作数。只有当第一个操作数为假(Falsy)时,才会继续计算并返回第二个操作数的值。
例如:
javascriptCopy Codevar result = false || true;
console.log(result); // 输出 true
result = false || false;
console.log(result); // 输出 false
var value = null || "Hello";
console.log(value); // 输出 Hello,因为第一个操作数为假,返回第二个操作数的值
value = "Goodbye" || "Hello";
console.log(value); // 输出 Goodbye,因为第一个操作数为真,直接返回第一个操作数的值
短路求值在编程中常用于条件判断和默认值的设定,能够简洁地表达逻辑关系。但需要注意,当第一个操作数是对象或函数时,无论其是否为真,都会返回该操作数本身,而不会继续计算后续的操作数。