MST

星途 面试题库

面试题:JavaScript复杂逻辑表达式的短路求值分析

有如下代码: ```javascript function func1() { console.log('func1被调用'); return true; } function func2() { console.log('func2被调用'); return false; } console.log(func1() && func2() || func1()); ``` 请分析输出顺序和最终结果,并阐述逻辑表达式短路求值在这段代码中的作用。
38.8万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. 输出顺序和最终结果
    • 首先调用func1(),输出func1被调用,返回true
    • 因为func1()返回true,根据&&运算符的短路求值规则,会继续调用func2(),输出func2被调用,返回false
    • 此时func1() && func2()结果为false(因为&&两边只要有一个为false结果就为false)。
    • 接着看||运算符,由于func1() && func2()结果为false,根据||运算符的短路求值规则,会继续调用func1(),再次输出func1被调用,返回true
    • 所以最终输出顺序为:
      • func1被调用
      • func2被调用
      • func1被调用
    • 最终结果为true
  2. 逻辑表达式短路求值的作用
    • func1() && func2()中,&&运算符要求两边都为true结果才为true。当func1()返回true时,会继续执行func2();如果func1()返回false,则不会执行func2(),这就是短路求值。这样可以避免不必要的计算,提高效率。
    • (func1() && func2()) || func1()中,||运算符只要有一边为true结果就为true。当func1() && func2()返回false时,会继续执行func1();如果func1() && func2()返回true,则不会执行后面的func1(),同样体现了短路求值,避免了多余操作。