You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中重复调用str.lastIndexOf('_')是否重复计算及优化疑问

问题解答

1. str.lastIndexOf('_')是否会被计算两次?

是的,两段代码里这个方法都会被执行两次:

  • 第一段代码:if判断条件里执行一次,若条件为真,赋值语句中会再执行一次。
  • 第二段代码:三元表达式的条件部分执行一次,当条件为真时,true分支里又会执行一次(注:这段代码的true分支写法存在逻辑问题,应该返回索引值而非重复判断,但即便如此,方法确实被执行了两次)。

2. 存入单独变量是否是最优方案?

绝对是最优方案。把str.lastIndexOf('_')的结果存入一个变量,既能避免重复计算提升执行效率,还能让代码更简洁易读,示例如下:

const lastUnderscoreIndex = str.lastIndexOf('_');
let z = lastUnderscoreIndex !== -1 ? lastUnderscoreIndex : 99999;

这样只执行一次方法,代码逻辑也更清晰。

3. 可以为了可读性刻意忽略执行效率吗?

可以,但要结合具体场景判断:

  • 如果是低频执行的代码(比如页面初始化逻辑、用户单次触发的操作),可读性优先更合理——代码的维护成本远大于那点可忽略的性能损耗,团队协作时清晰的代码比微乎其微的效率提升重要得多。
  • 如果是高频执行的代码(比如大型循环、频繁触发的渲染回调、批量数据处理逻辑),则需要兼顾效率和可读性,此时把重复计算的结果存变量其实能同时满足两者,没必要做极端取舍。

内容的提问来源于stack exchange,提问作者Nikolai Tkachenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:48:13