Объяснение ошибки 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
(включая первое и последнее пространство)