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

JavaScript while循环使用'++'运算符触发Lint报错排查

问题根因

替换自增写法后逻辑异常的核心原因是执行顺序错误:

  • 原写法里的后置自增i++是先取当前i对应的数组元素值,再给i加1,逻辑本身是正确的,只是触发了Lint规则中禁用一元自增运算符++的校验,报错提示为Unary operator '++' used
  • 把i += 1直接写在数组下标位置myArray[i += 1]时,JS会先执行i的自增操作,再读取新i对应的元素值:第一次循环直接跳过了索引为0的第一个数组元素,最后一轮循环还会读取到索引等于数组长度的undefined值,最终导致求和计算结果错误。
符合Lint规范的正确实现

只需要把取值操作和自增操作拆分为独立两行,保证执行顺序和原后置i++逻辑一致即可,修复后代码如下:

function average(myArray) {
  let i = 0;
  let summ = 0;
  if (myArray.length === 0) return undefined;
   
  const ArrayVz = myArray.length;
  while (i < ArrayVz) {
    summ += myArray[i];
    i += 1;
    if (typeof summ === 'string') return undefined;
  }
  return Math.round(summ / ArrayVz);
}
修复说明
  • 严格遵循Lint要求,全程不使用++一元运算符,不会触发相关校验报错
  • 执行顺序与原正确逻辑完全对齐:先读取当前索引的数组元素累加,再更新索引值,不会出现跳过元素、读取越界值的问题
  • 统一了原代码混乱的缩进,将循环内不会变更的数组长度变量从let改为const,符合JS编码规范,且不影响原有逻辑
  • 完整保留原代码所有业务逻辑:空数组返回undefined、求和过程中遇到字符串类型值返回undefined、最终计算结果四舍五入取整

内容的提问来源于stack exchange,提问作者Edison Filho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:15:32