2012-03-13 8 views
7

は以下のjsLintは

for(var i=0; i< data.cats.length; i++) list += buildCategories(data.cats[i]); 

jsLintが

Expected '{' and instead saw 'list'. 

が短く表記を使用しての代わりに、中括弧をそれそれをラップする実際の欠点があります私に語っ考えると{期待しますか?

+0

もしあなたがそのチェックをしたくないのであれば、単に "curly"を指定してヒンティングの設定を変更してください:false、 ' –

答えて

14

これは防御的プログラミングです。中括弧を使用すると、forに関連付けられることを意図したステートメントが明確に定義されます。

中括弧を使用しない場合、後でlist += buildCategories...の下に別の文を追加して、forループでも実行されることを期待する可能性があります。

+9

私はCrockfordのスタイルルールのすべてに同意しません、これと一緒に。 – Alnitak

+1

私はfor-ifを使用しているので、これは迷惑です。 (obj.hasOwnProperty(k)){...} '(または他のフィルタと一緒に)は非常に便利ですが、パターンによってこの警告が発生します。 –

+0

私は他の人のコードの数千行をデバッグしているので、「適切なスタイル」を使用するかどうかを決める贅沢はありません。これらのエラーを抑制するには、特にJSLintが一度発生しないので、これらのエラーを抑制するのが良いでしょう。 – pieman72

3

JSLintは、次の優れたコードスタイルをチェックします。中括弧を挿入するのは、コードがどこに属しているかが分かりやすいため、常に良いスタイルです。とにかくそれを処理するのは、ほとんどのminifierがそうしているからです。

7

「短い表記法を使用しての実際の欠点があります...」

それはあなたのコーディングについて慎重にいないのであれば、バグの原因になるが、それらを省略して提供してより洗練されたコードのIMOであり、一貫性があり、よく考えられたプログラミング標準に準拠していれば、省略しても問題はありません。

例えば、中括弧if/elseの中括弧を除外するステートメントがある場合、中括弧を使用してelseの平衡を取ることをお勧めします。誰かの物事は、彼らがifまたはelseに別のステートメントを追加することができた場合

if (condition) 
    if (condition2) 
     inner_if() 
    else ; 
else 
    outer_if() 

このコードは... IMOまだ

if (condition) { 
    if (condition2) { 
     inner_if(); 
    } 
} else { 
    outer_if(); 
} 

これよりもきれいで、それは修正する必要が理解の問題です。

実際には、どのような標準が使用されるのかというだけの問題です。中括弧を利用することは確かに一つの有効な選択肢ですが、あまりにも独断的ではありません。あなたが複数の構成ツールが必要な場合


、あなたの代わりにjsHint.comを検討することができます。

+0

なぜCW ????? –

+0

@AdamRackis:私の答えはすべてCWになりました。私はちょうどそのようにそれが好きだと思う。 –

+0

repラットレースに疲れましたか? :) –

関連する問題