Может кто-нибудь объяснить мне, почему JSHint жалуется на следующее:
window.location.href = String1
+ '#'
+ Sting2
+ '='
+ String3;
С ошибкой, Bad line breaking before '+' error
Я понимаю, что эту ошибку можно настроить с помощью laxbreak
параметра , который описывается как
Этот параметр подавляет большинство предупреждений о потенциально небезопасных разрывах строк в вашем коде. Он не подавляет предупреждения о стиле кодирования с запятой. Чтобы подавить их, вы должны использовать laxcomma (см. Ниже).
Это объяснение довольно краткое, и мне любопытно, почему такое прерывание линий считается плохим или слабым в первую очередь.
Имейте в виду, что я не пытаюсь начать здесь священную войну, я просто ищу объективный ответ о том, почему люди из JSHint думают, что это плохо, является ли это просто предпочтением стиля, которое они вводят в свой линтер (я думал, что JSLint был упрямый линтер), или если что-то может пойти не так с некоторыми интерпретаторами при таком разрыве строки.
источник
Ответы:
Это руководство по стилю, позволяющее избегать утверждений, которые могут быть связаны с предположениями об автоматической вставке точки с запятой .
Идея состоит в том, что к концу строки вы проясняете, заканчивается ли выражение на этом или может быть продолжено на следующей строке.
источник
+
. легче для глаз (и менее подвержено ошибкам) следить за одним столбцом слева, чем переходить к дальнему концу каждой строки, чтобы увидеть, будет ли он добавлен следующей строкой. даже грамматика менее неуклюжая: «Строка 118 добавляет 117» против «Строка 117 будет добавлена Строкой 118».Jshint не будет отмечать это как плохой разрыв строки, если вы используете + перед разрывом строки, а не в новой строке. Вот так:
источник
Не прямой ответ на вопрос, но для всех, кто сталкивается с этим в Google (как и я), кто хочет сохранить правило, но исправить предупреждения, может быть полезно следующее ...
При использовании Notepad ++ (например, с плагином JSLint) это можно исправить с помощью следующего поиска и замены:
(\r\n|\n|\r)( *)\+
+$1$2
(Проверено только в Windows, но регулярное выражение также должно работать с окончаниями строк в Unix или Mac OS.)
Для того, чтобы сделать подобную вещь для
||
,&&
,==
,!=
,<=
или>=
вместо того , чтобы+
использовать это:(\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
$3$1 $2
источник