MST

星途 面试题库

面试题:JavaScript 中如何优化简单求值表达式的性能

在JavaScript中,有这样一段代码:`for (let i = 0; i < 1000; i++) { let result = (i * 2 + 5) / 3; }`,请分析这段代码中求值表达式可能存在的性能问题,并提出优化方案。
30.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

性能问题分析

  1. 重复计算:在每次循环中,表达式 (i * 2 + 5) / 3 都会被重新计算。这里的乘法、加法和除法操作虽然单个来看简单,但在1000次循环中重复执行会带来性能开销。
  2. 变量声明:在循环内部使用 let 声明 result 变量,尽管JavaScript引擎有一定的优化能力,但每次循环都声明一个新变量也会带来一些开销。

优化方案

  1. 预计算:如果 (i * 2 + 5) / 3 中的 253 是固定值,可以将 (2 / 3)(5 / 3) 提前计算出来,然后在循环内使用这两个预计算的值进行简单的乘法和加法运算。
const factor1 = 2 / 3;
const factor2 = 5 / 3;
for (let i = 0; i < 1000; i++) {
    let result = i * factor1 + factor2;
}
  1. 减少变量声明:可以将 result 变量的声明移到循环外部,避免每次循环都进行变量声明操作。
let result;
for (let i = 0; i < 1000; i++) {
    result = (i * 2 + 5) / 3;
}
  1. 使用 const 替代 let(如果适用):如果 result 的值在循环内不需要重新赋值,可以使用 const 声明,这样有助于JavaScript引擎进行优化。
for (let i = 0; i < 1000; i++) {
    const result = (i * 2 + 5) / 3;
}