2016-01-14 5 views
6

既存のコードをECMAスクリプトに変換していますが、ESLintを使用してコーディング標準に従っています。私は、要素は、それが変更され、アレイにされていない押されているのでresultArray、ESLintの宣言については、次のECMAScript方法要素が配列にプッシュされても、ESLintは配列を変更しないと言います

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; 
    } 

エラー

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

しかしをスローする必要がありますか?

+5

しかし、同じ配列オブジェクトのままなので、そのオブジェクトへのポインタは定数です。 – Sirko

+1

ああ!オブジェクトの内容が変更されても、そのオブジェクトへの参照/ポインタは同じままなので、constを使用することをお勧めします。参照が変更されている場合、たとえばresultArray = someOtherArray、letを使うと問題ありません。とった! – shashi

答えて

15

このエラーを理解するには、const宣言された変数が値への読み取り専用参照を保持していることを理解する必要があります。しかし、それが保持する値が不変であることを意味するものではありません[mdn article]

あなただけの変数のメンバーを変更することなく、ES-糸くずの結合prefer-constルールに再割り当てを行っていないのでconst宣言された変数ではなくlet宣言された変数を使用することができることを警告します。

関連する問題