Kann mir jemand erklären, warum sich JSHint über Folgendes beschwert:
window.location.href = String1
+ '#'
+ Sting2
+ '='
+ String3;
Mit dem Fehler, Bad line breaking before '+' error
Ich verstehe, dass dieser Fehler mit der laxbreak
Option konfiguriert werden kann , die als beschrieben wird
Diese Option unterdrückt die meisten Warnungen vor möglicherweise unsicheren Zeilenumbrüchen in Ihrem Code. Es werden keine Warnungen bezüglich des Komma-First-Codierungsstils unterdrückt. Um diese zu unterdrücken, müssen Sie laxcomma verwenden (siehe unten).
Diese Erklärung ist ziemlich knapp und ich bin gespannt, warum das Brechen von Linien auf diese Weise überhaupt als schlecht oder nachlässig angesehen wird.
Denken Sie daran, ich versuche hier nicht, einen heiligen Krieg zu beginnen, ich suche nur nach einer objektiven Antwort darauf, warum die JSHint-Leute dies für schlecht halten, ob es nur eine Stilpräferenz ist, die sie in ihren Linter injizieren (ich dachte, JSLint war es der meinungsgebundene Linter) oder wenn bei bestimmten Interpreten etwas schief gehen kann, wenn die Linie auf diese Weise unterbrochen wird.
quelle
Antworten:
Es ist ein Styleguide, um Aussagen zu vermeiden, die Annahmen über das automatische Einfügen von Semikolons unterliegen könnten .
Die Idee ist, dass Sie am Ende einer Zeile klar machen, ob der Ausdruck dort endet oder in der nächsten Zeile fortgesetzt werden kann.
quelle
+
. Es ist für die Augen einfacher (und weniger fehleranfällig), einer einzelnen Spalte links zu folgen, als zum anderen Ende jeder Zeile zu springen, um zu sehen, ob sie an die nächste Zeile angehängt wird. Sogar die Grammatik ist weniger klobig: "Zeile 118 hängt 117 an" im Vergleich zu "Zeile 117 wird von Zeile 118 angehängt."Jshint kennzeichnet dies nicht als fehlerhaften Zeilenumbruch, wenn Sie das + vor dem Zeilenumbruch verwenden, im Gegensatz zu in der neuen Zeile. Wie so:
quelle
Keine direkte Antwort auf die Frage, aber für alle, die von Googling (wie ich) darauf stoßen und die Regel beibehalten, aber die Warnungen korrigieren möchten, kann Folgendes nützlich sein ...
Bei Verwendung von Notepad ++ (z. B. mit dem JSLint-Plugin) kann dies mithilfe der folgenden Suche und Ersetzung behoben werden:
(\r\n|\n|\r)( *)\+
+$1$2
(Nur unter Windows getestet, aber der Regex sollte auch mit Unix- oder Mac OS-Zeilenenden funktionieren.)
Gehen Sie eine ähnliche Sache für
||
,&&
,==
,!=
,<=
oder>=
statt+
, verwenden Sie diese:(\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
$3$1 $2
quelle