MST

星途 面试题库

面试题:JavaScript 逻辑表达式优化之短路求值应用

在JavaScript中,假设有这样一段代码:`function checkValues(a, b, c) { return a && b && c; }` ,请解释这段代码中的逻辑表达式是如何利用短路求值进行优化的,并且如果 `a` 是一个可能会触发复杂计算的函数调用,如何确保在 `a` 为 `false` 时不会执行后续复杂计算。
42.4万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 短路求值优化解释
    • 在JavaScript的逻辑与(&&)表达式a && b && c中,JavaScript会从左到右依次计算操作数。
    • 当计算到a时,如果afalse(或者是任何被视为假值的值,如nullundefined0''等),由于整个逻辑与表达式无论bc的值是什么,结果都必定为false,所以JavaScript会停止计算后续的操作数bc,这就是短路求值。
    • 例如,如果afalseb是一个函数调用,c是一个复杂的对象属性访问,b函数不会被调用,c的对象属性也不会被访问,从而优化了计算过程,提高了性能。
  2. 确保afalse时不执行后续复杂计算
    • 由于JavaScript逻辑与(&&)的短路求值特性,当a是一个可能会触发复杂计算的函数调用时,只要a返回一个假值,后续的bc就不会被计算。
    • 示例代码如下:
function complexCalculation() {
    console.log('This is a complex calculation');
    return false;
}
function otherValue() {
    console.log('This should not be logged if complexCalculation returns false');
    return true;
}
function checkValues(a, b, c) {
    return a && b && c;
}
let result = checkValues(complexCalculation(), otherValue(), true);
  • 在上述代码中,complexCalculation模拟了一个复杂计算函数,otherValue模拟了另一个值(可以是复杂计算的一部分)。因为complexCalculation返回falseotherValue函数不会被调用,确保了在afalse时不会执行后续复杂计算。