MST

星途 面试题库

面试题:JavaScript逻辑操作符性能优化场景分析

在一个复杂的JavaScript应用中,有大量使用逻辑与(&&)和逻辑或(||)操作符的逻辑判断。假设部分条件判断涉及到函数调用,你会从哪些方面优化这些逻辑操作符相关代码的性能?并举例说明。
35.6万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 减少不必要的函数调用
    • 尽量避免在逻辑与(&&)和逻辑或(||)操作符中进行重复且不必要的函数调用。如果一个函数调用的结果在逻辑判断中不会改变,将其提前计算并存储在变量中。
    • 例如:
    // 未优化
    function expensiveFunction() {
        console.log('执行了昂贵的函数');
        return true;
    }
    if (expensiveFunction() && expensiveFunction()) {
        console.log('条件满足');
    }
    // 优化后
    const result = expensiveFunction();
    if (result && result) {
        console.log('条件满足');
    }
    
  2. 合理安排条件顺序
    • 对于逻辑与(&&)操作符,将最有可能为假的条件放在前面。因为逻辑与操作符一旦遇到假值就会停止计算后续条件。
    • 例如:
    function checkCondition1() {
        console.log('检查条件1');
        return false;
    }
    function checkCondition2() {
        console.log('检查条件2');
        return true;
    }
    // 优化前
    if (checkCondition2() && checkCondition1()) {
        console.log('条件满足');
    }
    // 优化后
    if (checkCondition1() && checkCondition2()) {
        console.log('条件满足');
    }
    
    • 对于逻辑或(||)操作符,将最有可能为真的条件放在前面。因为逻辑或操作符一旦遇到真值就会停止计算后续条件。
    • 例如:
    function checkCondition3() {
        console.log('检查条件3');
        return true;
    }
    function checkCondition4() {
        console.log('检查条件4');
        return false;
    }
    // 优化前
    if (checkCondition4() || checkCondition3()) {
        console.log('条件满足');
    }
    // 优化后
    if (checkCondition3() || checkCondition4()) {
        console.log('条件满足');
    }
    
  3. 使用短路求值特性
    • 利用逻辑与(&&)和逻辑或(||)操作符的短路求值特性,将复杂的逻辑判断简化。
    • 例如,使用逻辑与操作符来执行一个函数仅当某个条件为真时:
    function condition() {
        return true;
    }
    function action() {
        console.log('执行动作');
    }
    condition() && action();
    
    • 使用逻辑或操作符来提供默认值:
    let value;
    let defaultValue = '默认值';
    let result = value || defaultValue;
    console.log(result);