このコードの場合:
var i = 0;
for (i < menuitem.length; i += 1;)
JSlintは以下を返します:
条件式を期待し、代わりに代入を見ました。
識別子が必要で、代わりに「)」が表示されました。
そして、スキャンを続行することを拒否します。このコードは正常に機能しますが、何が問題になっていますか?「if」ステートメントでこれをどのように書くことができますか?(それがjslintの意味である場合)。
助けてくれてありがとう!
このコードの場合:
var i = 0;
for (i < menuitem.length; i += 1;)
JSlintは以下を返します:
条件式を期待し、代わりに代入を見ました。
識別子が必要で、代わりに「)」が表示されました。
そして、スキャンを続行することを拒否します。このコードは正常に機能しますが、何が問題になっていますか?「if」ステートメントでこれをどのように書くことができますか?(それがjslintの意味である場合)。
助けてくれてありがとう!
ええ、JSLintはかなり悪質です。他の人が指摘しているように、あなたは正しい場所に物事を記入していませんが、それとは別に、JSLintはループの初期化部分に何かを入れることを要求します。for
ただし、ロジックをいじることなくうまく再生できるようにするために実行できるオプションがいくつかあります。私のお気に入りは、リセットするi
ことです(すでに設定されていますが):
var i = 0;
for (i = 0; i < menuitem.length; i += 1) {
/** do stuff **/
}
これにより、JSLintが満足し、同じ字句スコープ内のi
別のループに使用することにした場合に、JSLintがリセットされるようになります。for
別のオプションは、スペースを埋めるためにそこに単に投げ込むnull
ことです(の値をリセットしたくない場合i
):
var i = 0;
for (null; i < menuitem.length; i += 1) {
/** do stuff **/
}
どちらも正常に動作し、非常に気になるJSLintをなだめます。ただし、初期化部分を空白のままにしておくと、誰も気にしません(JSLintを除く)。JSHintを試してみてください。この種のことについては、もう少し寛容です。
あなたのfor
ループはちょっと奇妙です、2番目の部分はループの条件でなければなりません、代わりにあなたは割り当てを持っています。
あなたは常に順番に部品を持っている必要があります(initialisation; condition; step)
。
var i = 0;
for (; i < menuitem.length; i += 1)
セミコロンを最後から最初に移動しました。または、必要に応じて、変数の宣言と割り当てを最初の部分に配置することもできます。
for (var i = 0; i < menuitem.length; i += 1) {
// code
}
または
var i = 0;
for (; i < menuitem.length; i += 1) {
// code
}
コードスニペットから、iはループのサイクル数を制御するために使用される単なる変数であると想定します。正しいコードは次のようになります
for (var i = 0; i < menuitem.length; i += 1) {
// code
}
これが標準化された宣言と構文です。少なくとも今考えられる言語についてはそうです。そして、それがこのタイプのループのポイントです。forループはこのように設計されているため、作成者はwhileループを実行したい場合に、1行のコードを記述できます。
それを見つけた!検証の正確な答えは次のとおりです。
var i;
for (i = 0; i < menuitem.length; i += 1) {
// code
}
varは外にあるべきだとjslint:sは言います