我正在转换一些现有代码以遵循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)
但是由于元素被推入数组,是不是被修改了?
答案 0 :(得分:21)
要理解此错误,您必须了解const
声明的变量包含对值的只读引用。但这并不意味着它所拥有的价值是不可变的[mdn article]。
由于您只是更改变量的成员,但没有对绑定执行重新分配,因此es-lint的prefer-const
规则警告您可以使用const
声明的变量而不是{ {1}}声明变量。