Explication de la rupture de ligne erronée de JSHint avant l’erreur ‘+’

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

window.location.href = Ssortingng1 + '#' + Sting2 + '=' + Ssortingng3; 

Avec l’erreur, Bad line breaking before '+' error erronée Bad line breaking before '+' error

Je comprends que cette erreur peut être configurée avec l’ option laxbreak , qui est décrite comme

Cette option supprime la plupart des avertissements concernant des ruptures de lignes potentiellement dangereuses dans votre code. Il ne supprime pas les avertissements sur le style de codage en virgule. Pour supprimer ceux que vous devez utiliser laxcomma (voir ci-dessous).

Cette explication est assez laconique et je suis curieux de savoir pourquoi les lignes de rupture de cette façon sont considérées comme mauvaises ou laxistes en premier lieu.

Gardez à l’esprit que je n’essaie pas de déclencher une guerre sainte ici, je cherche juste une réponse objective à la raison pour laquelle les gens de JSHint pensent que c’est mauvais, que ce soit juste une préférence de style dans leur linter (je pensais que JSLint était le linter avisé), ou s’il ya quelque chose qui peut mal tourner pour certains interprètes lorsqu’il ya rupture de ligne.

C’est un guide de style pour éviter les déclarations qui pourraient être sujettes à des hypothèses sur l’insertion automatique des points-virgules .

L’idée est que vous indiquez clairement à la fin d’une ligne si l’expression se termine là ou pourrait être continuée à la ligne suivante.

Jshint ne le signalera pas comme un saut de ligne incorrect si vous utilisez le + avant le saut de ligne plutôt que dans la nouvelle ligne. Ainsi:

 window.location.href = Ssortingng1 + '#' + Sting2 + '=' + Ssortingng3; 

Pas une réponse directe à la question, mais pour ceux qui viennent de Google (comme moi) qui souhaitent garder la règle mais corrigent les avertissements, les éléments suivants peuvent être utiles …

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

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

(Testé uniquement sous Windows, mais le regex 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)( *)(\|\||&&|==|!=|<=|>=)
  • Remplacez par: $3$1 $2 (incluant le premier et le dernier espace)