Объяснение ошибки JSHint Плохая линия перед ошибкой "+"

Может кто-нибудь объяснить мне, почему JSHint жалуется на следующее,

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

С ошибкой Bad line breaking before '+' error

Я понимаю, что эту ошибку можно настроить с помощью параметра laxbreak , который описывается как

Этот параметр подавляет большинство предупреждений о возможных небезопасных прерываниях строки в вашем коде. Он не подавляет предупреждения о стиле кодирования с запятой. Чтобы подавить их, вы должны использовать laxcomma (см. Ниже).

Это объяснение довольно краткий и Мне любопытно, почему разбиение строк таким образом считается плохим или слабым в первую очередь.

Имейте в виду, что я не пытаюсь начать здесь священную войну, я просто ищу объективный ответ о том, почему люди JSHint считают это плохим, будь то предпочтение в стиле, которое они вводят в свой линт (I думал, что JSLint был утомленным linter), или если есть что-то, что может пойти не так на некоторых переводчиков, когда линия нарушает этот путь.

Ответ 1

Это руководство по стилю, чтобы избежать утверждений, которые могут быть связаны с предположениями о автоматической вставки точки с запятой.

Идея заключается в том, что вы очищаете ее до конца строки, заканчивается ли выражение или может быть продолжено на следующей строке.

Ответ 2

Jshint не будет отмечать это как неудачный разрыв строки, если вы используете + перед разрывом строки, а не в новой строке. Например:

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

Ответ 3

Не прямой ответ на вопрос, но для тех, кто сталкивается с этим из Googling (как и я), которые хотят сохранить правило, но исправить предупреждения, может быть полезно следующее:

При использовании Notepad ++ (например, с плагином JSLint) это можно устранить, используя следующий поиск и замену:

  • Найти что: (\r\n|\n|\r)( *)\+
  • Заменить с помощью  +$1$2  (включая первое и последнее пространство)
  • Режим поиска: Регулярное выражение

(Проверяется только в Windows, но регулярное выражение также должно работать с окончанием строки Unix или Mac OS.)

Чтобы сделать аналогичную вещь для ||, &&, ==, !=, <= или >= вместо +, используйте это:

  • Найти что: (\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
  • Заменить на:  $3$1 $2  (включая первое и последнее пространство)