2016-01-14 27 views
6

dizisine itilmesine rağmen dizinin hiç değiştirilmediğini söylüyor Varolan kodu ECMA komut dosyasını takip etmeye dönüştürüyorum ve bir kodlama standardını izlemek için ESLint kullanıyorum. I resultArray beyan için aşağıdaki ECMAScript yöntemESLint, dizinin

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

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

Ancak elemanlan

diziye itilen hata, bu değiştirilmiş değildir atar var mı?

+5

Ancak aynı dizi nesnesinde kalır, bu nedenle bu nesneye olan işaretçi sabittir. – Sirko

+1

Ah! Nesnenin içeriği değişse de, o nesneye ait referans/işaretçi aynı kalır, bu yüzden const kullanmak tercih edilir. Referans değiştirildiyse, ör. resultArray = someOtherArray, daha sonra kullanmak iyi olur. Anladım! – shashi

cevap

15

Bu hatayı anlamak için, const bildirilen değişkenlerin salt okunur başvuruları bir değerde tuttuğunu anlamanız gerekir. Ancak bu, tuttuğu değerin [mdn article] numaralı değişkendir.

yalnızca değişkenin üyelerini değişen ama es-tiftik bağlanmasının prefer-const üstünlüğüne bir yeniden düzenlemeyi performans göstermeyen yana bir const bildirilen değişken yerine let ilan değişkenin kullanılabileceği sizi uyarır.