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