ESLint 说数组从未被修改,即使元素被推入数组

ESLint says array never modified even though elements are pushed into array

我正在转换一些现有代码以遵循 ECMA 脚本,并且我正在使用 ESLint 来遵循编码标准。我有以下 ecmascript 方法

static getArrayOfIndices(text, char) {
    let resultArray = [];
    let index = text.indexOf(char);
    const lastIndex = text.lastIndexOf(char);
    while (index <= lastIndex && index !== -1) {
      resultArray.push(index);
      if (index < lastIndex) {
        index = text.substr(index + 1).indexOf(char) + index + 1;
      } else {
        index = lastIndex + 1999; // some random addition to fail test condition on next iteration
      }
    }
    return resultArray;
  }

对于resultArray的声明,ESLint抛出错误

ESLint: `resultArray` is never modified, use `const`instead. (prefer-const)

但是既然元素被压入数组,那不是修改了吗?

要理解此错误,您必须了解 const 声明的变量持有 read-only 对值的引用。但并不代表它持有的价值是不可变的[mdn article]

由于您只是更改变量的成员,而不是对绑定执行重新分配,因此 es-lint 的 prefer-const 规则警告您可以使用 const 声明的变量而不是 let 声明的变量。