Alguém pode me explicar por que o JSHint reclama do seguinte,
window.location.href = String1
+ '#'
+ Sting2
+ '='
+ String3;
Com o erro, Bad line breaking before '+' error
Entendo que esse erro pode ser configurado com a laxbreak
opção , descrita como
Esta opção suprime a maioria dos avisos sobre possíveis quebras de linha não seguras no seu código. Não suprime avisos sobre o estilo de codificação por vírgula. Para suprimir aqueles que você precisa usar laxcomma (veja abaixo).
Essa explicação é bem concisa e estou curioso para saber por que quebrar linhas dessa maneira é considerado ruim ou negligente em primeiro lugar.
Lembre-se de que não estou tentando iniciar uma guerra santa aqui, estou apenas procurando uma resposta objetiva sobre por que as pessoas do JSHint pensam que isso é ruim, se é apenas uma preferência de estilo que eles estão injetando em seu circuito (eu pensei que o JSLint era o ponteiro opinativo) ou se houver algo que pode dar errado em certos intérpretes ao quebrar a linha dessa maneira.
fonte
Respostas:
É um guia de estilo para evitar declarações que possam estar sujeitas a suposições sobre a inserção automática de ponto e vírgula .
A idéia é que você deixe claro, no final de uma linha, se a expressão termina aí ou pode continuar na próxima linha.
fonte
+
. é mais fácil para os olhos (e menos propenso a erros) seguir uma única coluna à esquerda do que pular para o final de cada linha para ver se ela será anexada à próxima linha. até a gramática é menos desajeitada: "a linha 118 acrescenta 117" versus "a linha 117 será anexada pela linha 118".Jshint não sinalizará isso como uma quebra de linha incorreta se você usar o + antes da quebra de linha, em oposição à nova linha. Igual a:
fonte
Não é uma resposta direta à pergunta, mas para quem se deparar com isso no Google (como eu fiz) que deseja manter a regra e corrigir os avisos, o seguinte pode ser útil ...
Ao usar o Notepad ++ (por exemplo, com o plugin JSLint), isso pode ser corrigido usando a seguinte pesquisa e substituição:
(\r\n|\n|\r)( *)\+
+$1$2
(Apenas testado no Windows, mas o regex também deve funcionar com as terminações de linha Unix ou Mac OS.)
Para fazer uma coisa semelhante para
||
,&&
,==
,!=
,<=
ou>=
em vez de+
, use o seguinte:(\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
$3$1 $2
fonte