MST

星途 面试题库

面试题:JavaScript复杂逻辑表达式优化

给定如下JavaScript代码:`function checkValues(x, y, z) { if ((x > 10 && y < 5 && z === 'valid') || (x < 5 && y > 10 && z === 'valid') || (x === 0 && y === 0 && z === 'invalid')) { return true; } return false; }` 请对函数内的逻辑表达式进行优化,减少不必要的计算,同时说明优化依据及可能带来的性能提升。
32.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

优化后的代码

function checkValues(x, y, z) {
    if (z === 'valid') {
        return (x > 10 && y < 5) || (x < 5 && y > 10);
    } else if (z === 'invalid') {
        return x === 0 && y === 0;
    }
    return false;
}

优化依据

  1. 提前判断公共条件:原逻辑表达式中,z === 'valid'z === 'invalid' 在多个子表达式中重复判断。将对 z 的判断提前,可以减少重复判断,避免在 z 不符合条件时,对 xy 的不必要比较。
  2. 短路逻辑:JavaScript 中的逻辑运算符 &&|| 具有短路特性。在优化后的代码中,当 z === 'valid' 时,直接判断 xy 的条件组合;当 z === 'invalid' 时,直接判断 x === 0 && y === 0。这种方式可以避免在不需要的情况下进行更多条件判断。

性能提升

  1. 减少判断次数:原代码每次都要对三个条件进行完整判断,而优化后,先判断 z 的值,对于不符合 z 条件的情况,直接跳过后续复杂的 xy 比较,从而减少了条件判断的次数。
  2. 利用短路特性:通过合理安排逻辑判断顺序,充分利用短路特性,进一步减少不必要的计算,提升了函数执行效率。在大规模数据或高频率调用场景下,这种优化带来的性能提升会更加显著。