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
声明的变量。
我正在转换一些现有代码以遵循 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
声明的变量。