129

JSHintが次のことについて不平を言う理由を誰かが私に説明できますか?

window.location.href = String1
    + '#'
    + Sting2
    + '='
    + String3;

エラーで、Bad line breaking before '+' error

このエラーは、次のように説明されているlaxbreak オプションで構成できることを理解しています。

このオプションは、コード内の安全でない可能性のある改行に関する警告のほとんどを抑制します。カンマ優先のコーディングスタイルに関する警告は抑制されません。それらを抑制するには、laxcommaを使用する必要があります(以下を参照)。

この説明はかなり簡潔で、そもそもなぜこのように線を切ることが悪いまたは緩いと見なされるのか興味があります。

私はここで聖戦を始めようとしているのではなく、JSHintの人々がなぜこれが悪いと思うのか、それがリンターに注入しているスタイルの好みであるかどうかについての客観的な答えを探しているだけです(JSLintは意見のあるリンター)、またはこの方法で改行したときに特定の通訳者に問題が発生する可能性がある場合。

4

3 に答える 3

111

これは、自動セミコロン挿入に関する仮定に責任を負う可能性のあるステートメントを回避するためのスタイルガイドです。

行の終わりまでに、式がそこで終了するのか、それとも次の行に続けることができるのかを明確にするという考え方です。

于 2013-02-28T16:53:23.523 に答える
12

Jshintは、改行ではなく改行の前に+を使用した場合、これを不正な改行としてフラグを立てません。そのようです:

window.location.href = String1 +
'#' +
Sting2 +
'=' +
String3;
于 2015-02-18T16:43:16.993 に答える
3

質問への直接の答えではありませんが、ルールを維持したいが警告を修正したいグーグルからこれに出くわした人にとっては、以下が役立つかもしれません...

Notepad ++を使用する場合(たとえば、JSLintプラグインを使用する場合)、これは次の検索と置換を使用して修正できます。

  • 何を見つける:(\r\n|\n|\r)( *)\+
  • 置換:(最初と最後のスペースを含む) +$1$2 
  • 検索モード:正規表現

(Windowsでのみテストされていますが、正規表現はUnixまたはMac OSの行末でも機能するはずです。)

、、、、、またはの代わりに同様のことを行うに||&&、次を使用します。==!=<=>=+

  • 何を見つける:(\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
  • 置換:(最初と最後のスペースを含む) $3$1 $2 
于 2014-12-06T15:49:37.263 に答える