Je convertis un code existant pour suivre le script ECMA et j'utilise ESLint pour suivre une norme de codage. J'ai la méthode ecmascript suivante
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; }
Pour la déclaration de resultArray, ESLint lance l'erreur
ESLint: `resultArray` is never modified, use `const`instead. (prefer-const)
Mais puisque les éléments sont poussés dans le tableau, n'est-ce pas en train d'être modifié?
Pour comprendre cette erreur, vous devez comprendre que les variables const
déclarées contiennent des références en lecture seule à une valeur. Mais cela ne signifie pas que la valeur qu'il détient est immuable [article mdn] .
Puisque vous ne modifiez que les membres de la variable mais n'effectuez pas de réaffectation sur la liaison, la règle prefer-const
d'es-lint vous avertit qu'une variable const
déclarée pourrait être utilisée au lieu d'une variable déclarée.