2013-02-28 11 views
113

qualcuno può spiegarmi perché JSHint lamenta il seguente,Spiegazione della linea di rottura Bad JSHint prima di '+' errore

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

con l'errore, Bad line breaking before '+' error

Capisco che questo errore può essere configurato con la laxbreakoption, che viene descritto come

Questa opzione elimina la maggior parte delle avvertenze circa rotture della linea eventualmente pericolosi nei tuoi co de. Non sopprime gli avvertimenti sullo stile di codifica della virgola prima. Per sopprimere quelli devi usare laxcomma (vedi sotto).

Questa spiegazione è piuttosto laconico e mi incuriosisce il motivo per cui rompere le linee in questo modo è considerato cattivo o lassista, in primo luogo.

Tenete a mente che non sto cercando di iniziare una guerra santa qui, sto solo cercando una risposta obiettiva sui motivi per cui la gente JSHint pensa che questo è un male, se è solo una preferenza stile che stanno iniettando nel loro linter (Pensavo che JSLint fosse l'interlocutore supponente), o se c'è qualcosa che può andare storto su certi interpreti quando si rompono in questo modo.

+6

Penso che sia solo "cattivo stile" secondo JSHint. Otterresti lo stesso effetto se usi le virgole principali. Per la leggibilità, lo riscriveremo almeno con il + alla fine della riga. – Iwan

+0

@Iwan, dovresti inserire il tuo commento in una risposta. –

+21

Bummer. Penso che questo stile sia assolutamente lo stile più leggibile da usare con le stringhe multi-linea, specialmente quando si visualizza il codice in una finestra stretta. – Lambart

risposta

99

È una guida di stile per evitare affermazioni che potrebbe essere assoggettabili a automatic semicolon insertion.

L'idea è che si rendono chiaro per la fine di una riga se l'espressione finisce lì o potrebbe proseguire sulla riga successiva.

+6

Grazie per la risposta, avere una motivazione dietro l'errore rende molto più facile per me giustificare l'apporto delle modifiche per placare JSHint. –

+1

"se hai sostituito window.location.href = con return, solo String1 verrebbe elaborato" - questo non è il caso – thorn

+1

@thorn hai assolutamente ragione - non so dove ho preso quella nozione ma sotto esame è piatto fuori sbagliato Grazie per il testa a testa! – Barney

3

Non è una risposta diretta alla domanda, ma per chi viene in questo da usare Google (come ho fatto io) che desiderano mantenere la regola, ma correggere gli avvertimenti, possono essere utili ...

Quando utilizzando Notepad ++ (ad esempio con JSLint plugin), questo può essere risolto utilizzando la seguente ricerca & sostituire:

  • individuare ad esempio: (\r\n|\n|\r)(*)\+
  • sostituire con:  +$1$2 (tra cui il primo e l'ultimo spazio)
  • modalità di ricerca: espressioni regolari

(solo testato su Windows, ma la regex dovrebbe funzionare anche con Unix o Mac OS fine riga.)

di fare una cosa simile per ||, &&, ==, !=, <= o >= invece di +, utilizzare questo:

  • Trova: (\r\n|\n|\r)(*)(\|\||&&|==|!=|<=|>=)
  • Sostituire con:  $3$1 $2 (incluso il primo e l'ultimo spazio)
+4

Utile, forse, per le persone che vogliono cambiare la loro formattazione. Ma non riesce assolutamente a rispondere alla domanda (implicita): "Sono curioso di sapere perché rompere le linee in questo modo è considerato brutto o negligente in primo luogo." – Lambart

+0

Punto giusto, ho aggiunto una nota in alto che spiega perché ho postato questo. –

+0

fantastico, molto meglio. – Lambart

12

Jshint non contrassegnerà questo come un'interruzione di riga errata se si utilizza il + prima dell'interruzione di riga in contrapposizione a nella nuova riga. Così:

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

Questo non risponde alla domanda nemmeno una virgola. Perché così tanti voti positivi? – Lambart

+2

Forse, ma questo è un modo per ovviare a questo problema senza dover modificare le impostazioni di jshint. – asulaiman

+4

Questo dovrebbe essere un commento poiché in realtà non risponde alla domanda ma fornisce informazioni preziose. – tomtomssi

Problemi correlati