web-dev-qa-db-ja.com

JSHintの説明「+」エラーの前の不正な改行

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

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

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

このエラーはlaxbreakoption で設定できることを理解しています。

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

この説明は非常に簡潔で、このように行を分割することが最初に悪いまたは緩いと考えられる理由について興味があります。

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

123
James McMahon

couldセミコロンの自動挿入 についての仮定に責任を負う可能性があるというステートメントを避けるためのスタイルガイドです。

アイデアは、式がそこで終わるか、次の行に続くかどうかを行の終わりまでに明確にすることです。

105
Barney

新しい行ではなく、改行の前に+を使用すると、Jshintはこれを不良改行としてフラグしません。そのようです:

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

質問に対する直接的な答えではありませんが、ルールを維持したいが警告を修正したいグーグルからこれに出くわした人(私がしたように)には、以下が役立ちます...

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

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

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

||の代わりに&&==!=<=>=、または+に対して同様のことを行うには、この:

  • 何を見つける:(\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
  • 置換: $3$1 $2 (最初と最後のスペースを含む)
3
Steve Chambers