2017-06-15 13 views
0

さまざまなコードを組み合わせようとしていますので、前もってiの開始を宣言したいと思います。forループを書き直そうとすると、jslintエラーが発生する

OLD

var i, 
    max_i = 4; 


for (i = 2; i<= max_i; i += 1) 
{ 
    //things 
} 

NEW

var i = 2, 
    max_i = 4; 


for (; i<= max_i; i += 1) 
{ 
    //things 
} 

問題は、私はJSLint

期待
  • ')' で様々なエラーを取得し、代わりに '< =' を見ていますということです。
  • 予想される ';'代わりに「私」を見た。
  • 「{」と見え、「max_i」と見なされます。

コードはどちらの場合でも正常に実行されます。

+0

jshintのどのバージョン:外側の関数は、グローバルおよび非機能スコープコードを避けるためですか?私はnetbeans(最新) – JavaKungFu

+0

バージョン1.0.4と報告されているエラーを見ていない。私はそれは単なるコーディングスタイルの問題だと思う。私はそれらを並べることを好む。決してそれに問題はなかった。 2.私が++演算子を使用する場合、jslintはエラーを返すので、i + = 1に変更しました。 – AllisonC

答えて

1
for (i; i<= max_i; i += 1) 
{ 
    //things 
} 
+0

これはそれを修正した、私ができるとき受け入れます。 – AllisonC

-2

iを事前に宣言して初期化することはできますが、それでもループ構成ではループ変数として設定する必要があります。そして、デバッグがより簡単になるため、上記ではなくループ設定で初期化すれば、より明確になります。

var i , max_i = 4; 

for (i = 2; i <= max_i; i++) { 
    //things 
} 

また、常に次の行にそれを置くことダウン引き起こす可能性のJavaScript、内の特定の例があるとして、それは定義文と同じ行に開口部中括弧(})を配置することをお勧めしますセミコロンの自動挿入によるコード内のバグ。

最後に、値を1つ増やすには、+=1ではなく、++のunaray演算子を使用できます。

+0

を使用して、 – AllisonC

+0

"でもループ設定でループ変数として設定する必要があります。 'var i = 0; for(;;){console.log(i ++); if(i> 1)break;} ' –

+1

@AllisonC私が私の答えで述べたように、これはコーディングスタイルの好みにすぎないというのはよくある誤解です。これは、適切な状況下でコードに実際のバグを引き起こす可能性のあるスタイルです。 –

0

JSLintは、より良いコードを書いたり、信憑性を持ったり、味わいのないものではありません。

for()を初期化していないと醜い(悪いスタイル)と考えられるため、文句を言っています。

常に初期化する必要があります。変数を定義しないで宣言し、以下に示すようにそれらを初期化することもできます。今日は"use strict"も使用します。そうしないと、気持ちが悪いです。

/*jslint for */ 
 

 
(function() { 
 
    "use strict"; 
 
    var i; 
 
    var max_i; 
 

 
    max_i = 4; 
 
    for (i = 2; i <= max_i; i += 1) 
 
    { 
 
     // things 
 
    } 
 
}());

+0

私は "厳密な使用"を使用していますが、私がしなければそれは文句を言うでしょう:) – AllisonC

+0

ああ、大丈夫:私はスニペットでそれを見ていない。 – pid

関連する問題