Per rendere semplici le regole del punto e virgola
Ogni riga che inizia con un (
, [
, `o qualsiasi operatore (/, +, - sono gli unici validi), deve iniziare con un punto e virgola.
func()
;[0].concat(myarr).forEach(func)
;(myarr).forEach(func)
;`hello`.forEach(func)
;/hello/.exec(str)
;+0
;-0
Questo impedisce a
func()[0].concat(myarr).forEach(func)(myarr).forEach(func)`hello`.forEach(func)/hello/.forEach(func)+0-0
monstrocity.
Nota aggiuntiva
Per menzionare cosa succederà: le parentesi indicheranno, le parentesi saranno trattate come parametri di funzione. Il backtick si trasformerebbe in un modello con tag e le espressioni regolari o gli interi firmati in modo esplicito si trasformeranno in operatori. Ovviamente puoi semplicemente aggiungere un punto e virgola alla fine di ogni riga. È bene tenerlo presente quando si esegue rapidamente la prototipazione e si lascia cadere il punto e virgola.
Inoltre, l'aggiunta di punti e virgola alla fine di ogni riga non ti aiuterà con quanto segue, quindi tieni presente affermazioni come
return // Will automatically insert semicolon, and return undefined.
(1+2);
i // Adds a semicolon
++ // But, if you really intended i++ here, your codebase needs help.
Il caso sopra accadrà per tornare / continuare / interrompere / ++ / -. Qualsiasi linter lo rileverà con codice morto o errore di sintassi ++ / - (++ / - non accadrà mai realisticamente).
Infine, se vuoi che la concatenazione dei file funzioni, assicurati che ogni file termini con un punto e virgola. Se stai usando un programma bundler (consigliato), dovrebbe farlo automaticamente.