面试题答案
一键面试问题分析
- 可读性问题:代码中多种操作符混合使用,没有适当的括号来明确运算优先级,导致阅读代码时难以快速理解执行逻辑。这里
&&
、? :
、||
等操作符优先级规则复杂,代码中直接写在一起,易产生混淆。 - 性能问题:由于没有清晰的优先级界定,JavaScript 引擎在解析和执行代码时,可能需要额外的计算来确定操作顺序,影响性能。例如
a + b && c
这里,先计算a + b
得到15
,然后15 && c
实际是15
先转换为布尔值true
再与c
进行&&
运算。但代码可读性差的情况下,引擎处理起来相对不高效。
优化方案
let a = 10;
let b = 5;
let c = true;
// 使用括号明确优先级
let result;
if ((a + b) && c) {
result = a - b;
} else {
result = c || a * b;
}
优化原因
- 提升可读性:通过使用
if - else
语句,代码的逻辑分支更加清晰。明确了先判断(a + b) && c
的条件,满足则执行a - b
,不满足则执行c || a * b
,相比原来一行复杂的三元表达式,更易于理解和维护。 - 提升性能:JavaScript 引擎对于
if - else
语句的执行逻辑非常明确,不需要像解析复杂的操作符优先级表达式那样进行额外的计算来确定执行顺序。if - else
语句在执行过程中可以更高效地完成条件判断和分支执行,从而提升了代码的执行性能。