面试题答案
一键面试优化后的代码
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;
}
优化依据
- 提前判断公共条件:原逻辑表达式中,
z === 'valid'
和z === 'invalid'
在多个子表达式中重复判断。将对z
的判断提前,可以减少重复判断,避免在z
不符合条件时,对x
和y
的不必要比较。 - 短路逻辑:JavaScript 中的逻辑运算符
&&
和||
具有短路特性。在优化后的代码中,当z === 'valid'
时,直接判断x
和y
的条件组合;当z === 'invalid'
时,直接判断x === 0 && y === 0
。这种方式可以避免在不需要的情况下进行更多条件判断。
性能提升
- 减少判断次数:原代码每次都要对三个条件进行完整判断,而优化后,先判断
z
的值,对于不符合z
条件的情况,直接跳过后续复杂的x
和y
比较,从而减少了条件判断的次数。 - 利用短路特性:通过合理安排逻辑判断顺序,充分利用短路特性,进一步减少不必要的计算,提升了函数执行效率。在大规模数据或高频率调用场景下,这种优化带来的性能提升会更加显著。