¿Alguien puede explicarme por qué JSHint se queja de lo siguiente,
window.location.href = String1
+ '#'
+ Sting2
+ '='
+ String3;
Con el error Bad line breaking before '+' error
Entiendo que este error se puede configurar con la laxbreak
opción , que se describe como
Esta opción suprime la mayoría de las advertencias sobre saltos de línea posiblemente inseguros en su código. No suprime las advertencias sobre el estilo de codificación de primera coma. Para suprimirlos, debe usar laxcomma (ver más abajo).
Esta explicación es bastante breve y tengo curiosidad acerca de por qué romper líneas de esta manera se considera malo o laxo en primer lugar.
Tenga en cuenta que no estoy tratando de comenzar una guerra santa aquí, solo estoy buscando una respuesta objetiva sobre por qué la gente de JSHint piensa que esto es malo, si es solo una preferencia de estilo que están inyectando en su linter (pensé que JSLint era el linter obstinado), o si hay algo que puede salir mal en ciertos intérpretes cuando se rompe la línea de esta manera.
fuente
Respuestas:
Es una guía de estilo para evitar afirmaciones que puedan estar sujetas a suposiciones sobre la inserción automática de punto y coma .
La idea es dejar en claro al final de una línea si la expresión termina allí o podría continuar en la siguiente línea.
fuente
+
. Es más fácil para los ojos (y menos propenso a errores) seguir una sola columna a la izquierda que saltar al final de cada línea para ver si la siguiente línea la agregará. incluso la gramática es menos torpe: "La línea 118 agrega 117" versus "La línea 117 se agregará a la línea 118".Jshint no marcará esto como un salto de línea incorrecto si usa el + antes del salto de línea en lugar de en la nueva línea. Al igual que:
fuente
No es una respuesta directa a la pregunta, pero para cualquiera que se encuentre con esto en Google (como lo hice yo) y desee mantener la regla pero corregir las advertencias, lo siguiente puede ser útil ...
Al usar Notepad ++ (por ejemplo, con el complemento JSLint), esto se puede solucionar mediante la siguiente búsqueda y reemplazo:
(\r\n|\n|\r)( *)\+
+$1$2
(Solo se probó en Windows, pero la expresión regular también debería funcionar con las terminaciones de línea de Unix o Mac OS).
Para hacer una cosa similar para
||
,&&
,==
,!=
,<=
o>=
en lugar de+
, utilice la siguiente:(\r\n|\n|\r)( *)(\|\||&&|==|!=|<=|>=)
$3$1 $2
fuente