web-dev-qa-db-fra.com

Explication de la rupture de ligne incorrecte de JSHint avant l'erreur '+'

Quelqu'un peut-il m'expliquer pourquoi JSHint se plaint de ce qui suit,

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

Avec l'erreur, Bad line breaking before '+' error

Je comprends que cette erreur peut être configurée avec le laxbreakoption , décrit comme

Cette option supprime la plupart des avertissements concernant les coupures de ligne potentiellement dangereuses dans votre code. Il ne supprime pas les avertissements concernant le style de codage comma-first. Pour supprimer ceux-ci, vous devez utiliser laxcomma (voir ci-dessous).

Cette explication est assez succincte et je suis curieux de savoir pourquoi casser des lignes de cette façon est considéré comme mauvais ou laxiste en premier lieu

N'oubliez pas que je n'essaie pas de déclencher une guerre sainte ici, je cherche simplement une réponse objective sur la raison pour laquelle les gens de JSHint pensent que c'est mauvais, que ce soit simplement une préférence de style qu'ils injectent dans leur linter (je pensais que JSLint l’opinion), ou s’il ya quelque chose qui ne va pas avec certains interprètes lorsqu’une rupture de ligne se produit de cette façon.

123
James McMahon

C'est un guide de style pour éviter les déclarations qui pourraient être passibles d'hypothèses sur insertion automatique d'un point-virgule .

L'idée est de préciser à la fin de la ligne si l'expression se termine ici ou si elle peut être poursuivie à la ligne suivante.

105
Barney

Jshint ne signalera pas ceci comme un saut de ligne incorrect si vous utilisez le + avant le saut de ligne, par opposition à celui de la nouvelle ligne. Ainsi:

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

Ce n'est pas une réponse directe à la question mais à quiconque de googler (comme je l'ai fait) qui souhaite garder la règle mais corriger les avertissements, les éléments suivants peuvent être utiles ...

Lorsque vous utilisez Notepad ++ (avec le plugin JSLint, par exemple), vous pouvez résoudre ce problème à l'aide de la fonction de recherche et remplacement suivante:

  • Trouver quoi: (\r\n|\n|\r)( *)\+
  • Remplacer par:  +$1$2  (incluant le premier et le dernier espace)
  • Mode de recherche: expression régulière

(Testé uniquement sous Windows, mais l'expression régulière devrait également fonctionner avec les fins de ligne Unix ou Mac OS.)

Faire la même chose pour ||, &&, ==, !=, <= ou >= au lieu de +, utilisez ceci:

  • Trouver quoi: (\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
  • Remplacer par:  $3$1 $2  (incluant le premier et le dernier espace)
3
Steve Chambers