2017-02-08 1 views
2

ESLintを使用してビルド時にjavascriptコードをチェックしていますが、no-unused-varsエラーが発生し、変数。私は変数がどのように未使用と未定義の両方になるのかを理解することはできません。このラウンドを取得する方法についてESLint no-unused-varsおよびno-undefエラーが使用されていますが、変数が使用されています

line 3 error 'a' is defined but never used no-unused-vars 
line 5 error 'a' is defined but never used no-unused-vars 
line 7 error 'a' is not defined    no-undef 

任意のアイデア:私は上記のpseudode表現を考える

export function count(){ 
    if (counter > 3){ 
     const a = 'big'; 
    } else { 
     const a = 'small'; 
    } 
    return a; 
} 

はESLintから次のエラーを取得しますか?

答えて

4

constはブロックスコープです。だからあなたがそこでやっているのは、ブロックが実行され、実行されていない範囲で、範囲外になるようにしてから、となる異なるaを返そうとしているところにあるaを作成することです。 aは閉じられていません)。 return a;行は、その上のいずれかのブロック内で宣言されたaを参照していません。それまでに範囲外になったものです。

ので、代わりに:

export function count(){ 
    const a = counter > 3 ? 'big' : 'small'; 
    return a; 
} 

または

export function count(){ 
    let a; // Declared outside the blocks 
    if (counter > 3){ 
     a = 'big'; 
    } else { 
     a = 'small'; 
    } 
    return a; 
} 
+0

私はあなたがいる場合で、 'A'が他に1とは何の関係もないことを言及すべきだと思います。変数が再作成され使用されないため、変数が異なります。 – Li357

+0

@AndrewLi:ええ、あなたはおそらく正しいでしょう。私が始めた文章のバージョン(そして決して投稿しなかった、私はそれを最初に変更した)は、明確になったが、はっきりしなかった。 :-) –

関連する問題