18

次のコードを jshint に渡すと、if 条件の改行が悪いと見なされ、「'&&' の前で改行が正しくありません」と表示されます。

if (1 == 1 
        && true) {
    console.log("hello world");
}

ただし、「&&」の後に改行を入れることは問題ありません。

if (1 == 1 && 
        true) {
    console.log("hello world");
}

なぜ jshint は前者が間違っていて後者が正しいと考えるのですか?

4

2 に答える 2

14

GitHub での議論によると:

これにより、セミコロンの挿入や古い JavaScript パーサーの破損などの問題が発生する可能性があります。幅広いブラウザをチェックしてください。

このチェックは で無効にできますlaxbreak:true

このlaxbreakオプションは廃止予定ですが、デフォルトの jshint の動作が変更されるかどうかはわかりません。

于 2013-01-08T12:13:00.363 に答える
3

JSHint の作成者は、おそらくこの種のラッピングを好ま&&ず、より一般的であると思われる最初の行を好みます。

この規則の背後にある主な理由は、その行が前の行の続きであることをオペレーターが明確にするためです。改行の前に演算子があると、これを見つけるのがはるかに難しくなります。

実際、あなたが Github で何を求めているかについての問題があります: https://github.com/jshint/jshint/issues/557

于 2013-01-08T11:44:56.150 に答える