Validatore JavaScript
Indica la riga, non solo l’errore
Questo validatore JavaScript analizza uno script come farebbe un motore e segnala la prima cosa che lo ferma. Inoltre ogni nota porta una riga, una colonna e il token colpevole, così andate subito al punto. Niente di quello che incollate lascia il browser e niente viene eseguito.
- GratuitoPrezzo
- ES2024Analizza
- MaiEsegue il codice
- NessunoCaricamenti
JavaScript Validator
Read a script and name the first syntax error, with the line and the column
Niente di letto per ora.
Letto fino in fondo. Ogni riga si analizza, e non c’è nulla da correggere.
Ready. Paste a script, or press the sample button.
Che cosa controlla un validatore JavaScript
Un motore legge uno script intero prima di lanciarne una sola riga. Di conseguenza una parentesi rotta in qualsiasi punto ferma il file, e la scheda resta bianca.
È per questo guasto che esiste questo validatore JavaScript. Percorre lo script come testo e segnala il primo punto in cui la grammatica si rompe, con la riga e la colonna.
Inoltre controlla la forma di quello che ha letto. Una graffa senza compagna, una stringa che non chiude mai, una parola chiave usata come nome, una virgola smarrita nella lista di argomenti di una chiamata.
Non costruisce nessun contesto di esecuzione, così non crea nessuna variabile globale e non chiama nessuna funzione. Perché il lettore legge soltanto lo script, potete puntare un validatore su codice che non lancereste mai su una pagina vostra.
Niente lascia questa scheda. Per questo uno script di un cliente sotto accordo di riservatezza viene letto esattamente come uno pubblico.
Come un validatore JavaScript legge uno script
La prima passata trasforma il testo in token. Un numero, una stringa, un template, un’espressione regolare, un nome, un operatore e una parola chiave sono cose diverse, e il lettore decide carattere per carattere quale sta guardando.
Poi la seconda passata percorre quei token in ordine e controlla la forma di ciò che legge: quali parentesi restano aperte, quali nomi un ambito tiene già e se una parola come return ha una funzione attorno. Il regolamento qui è ECMA-262, lo standard dietro ogni motore.
L’ordine conta, e spiega un numero sorprendente di messaggi di errore. Perché la divisione in token viene prima, uno script che sembra avere un problema di parentesi spesso ha invece una virgoletta che non ha mai chiuso.
Un caso chiede un secondo sguardo invece di una regola: una barra è un operatore di divisione oppure l’inizio di un’espressione regolare, e la risposta dipende dal token precedente. Per questo il tokenizzatore chiede all’ultimo token che cosa fosse.
I template aggiungono un’altra piega. Perché un template può contenere un’espressione fra graffe, il tokenizzatore tiene una pila del template in cui si trova. In questo modo una graffa in una stringa è testo, e una graffa dentro un template è codice.
Perché uno script valido può essere comunque sbagliato
Grammatica e significato sono due strati separati. Un validatore risponde alla domanda della grammatica, e ogni validatore utile si ferma lì.
Così uno script passa con una variabile mai dichiarata in modalità strict, con una proprietà letta da un valore che in quel momento contiene undefined, oppure con un await dentro una funzione che non è asincrona. Ognuno di questi è un problema di esecuzione.
Il confine fra i due vale la pena di ricordarlo. Un errore di sintassi significa che nessuna parte del file è girata, e un errore di esecuzione significa che il file è girato fino a quella riga. Perciò i due chiedono un debug completamente diverso.
Per questo la pagina nomina il primo errore invece di cento. Perché l’analisi si ferma lì, tutto quello che segue è un indovinello, e una lista di supposizioni pesa meno di un fatto.
I sei controlli e che cosa significa ciascuno
Il primo controllo è l’equilibrio delle parentesi. Il lettore segnala una graffa, una quadra o una tonda senza compagna nel punto in cui ha rinunciato. Infatti questo è l’unico guasto che costa il file intero.

Il secondo è una stringa o un template non chiuso. Perché il tokenizzatore inghiotte tutto quello che segue una virgoletta di apertura, la nota nomina sia la virgoletta sia la fine del file dove la ricerca si è fermata.
Il terzo è un token che la grammatica non permette. Due operatori di fila, una virgola nel posto sbagliato, oppure una freccia senza nulla davanti. Così ognuno arriva con il token stesso.
Il quarto è una parola chiave usata male come nome. Per questo il lettore rifiuta un’assegnazione a una parola riservata, e una variabile che ne porta il nome, prima che qualcosa giri.
Il quinto è un duplicato in uno stesso ambito. Due parametri con lo stesso nome, oppure un let che ripete un nome già dichiarato nello stesso blocco. Perché nel primo caso vince il secondo e nel secondo solleva un errore, il lettore li nomina entrambi.
Il sesto è un return fuori da una funzione, e i suoi parenti. Un break senza ciclo, un case senza switch e un yield senza generatore. Quindi questi stanno in una posizione e in nessun’altra.
Quello che questa pagina non farà
Non lancerà il vostro script. Niente qui crea una funzione, assegna una variabile o avvia un timer, quindi niente può agire sulla pagina mentre leggete.

Non segnalerà un errore di esecuzione, un errore di tipo o una chiamata di rete fallita. Perché quelli richiedono un motore, e un motore lo avete già nella scheda accanto.
Non correggerà il codice. Una supposizione sulla parentesi mancante è una nota, non una modifica, perché una correzione automatica può trasformare un errore chiaro in un cambio di comportamento silenzioso.
Non controllerà i tipi. Un file con un’annotazione di tipo porta più di JavaScript, quindi incollate l’uscita del vostro compilatore invece del suo ingresso.
In questa pagina
- Lo strumento
- Che cosa controlla un validatore JavaScript
- Come usare il validatore JavaScript
- Perché usare questo validatore JavaScript
- Abitudini che tengono uno script analizzabile
- Sei modi in cui uno script non passa l’analisi
- Domande sul validatore JavaScript
- Strumenti che vanno con questo
Continua
Come usare il validatore JavaScript
Quattro passi, e nessuno chiede un account.
- 1
Incollate lo script
Incollate per prima cosa un file intero o una funzione. Perché il lettore lavora sul testo invece che su una forma compilata, un frammento va bene finché le sue parentesi si chiudono.
- 2
Scegliete il tipo di sorgente
Scegliete poi uno script oppure un modulo. Perché import ed export appartengono a un modulo, quella scelta decide se il lettore li legge come validi oppure come un errore.
- 3
Leggete la prima nota
Andate dopodiché alla riga e alla colonna che nomina. Perché l’analisi si ferma al primo guasto, la seconda nota è una conseguenza invece di un secondo sbaglio.
- 4
Correggete, rilanciate e andate avanti
Modificate infine nel vostro editor e reincollate per confermare che il conteggio è zero. Dopo questo il file è pronto per il minificatore o per il browser.
Perché usare questo validatore JavaScript
Cinque motivi, e ognuno risparmia una sessione di debug.
Nomina una riga e una colonna
Perché la nota porta entrambe, atterrate sul carattere invece che sulla zona. Così un file di duecento righe è una lettura breve invece di una caccia.
Spiega perché l’analisi si è fermata
Una nota dice che cosa la grammatica si aspettava in quel punto. Perciò la correzione è spesso chiara dalla sola nota, senza un secondo parere.
Niente viene eseguito
Perché lo script viene soltanto letto, un frammento di uno sconosciuto non può agire mentre lo guardate. Così un validatore è il posto sicuro dove incollarne uno.
Niente viene caricato
L’analisi avviene qui e in nessun altro posto. Per questo un file di un repository privato si incolla senza rischio.
Legge la sintassi moderna
Perché la grammatica segue lo standard attuale, una funzione freccia, un concatenamento opzionale e un campo di classe passano. Così un file moderno non viene segnalato per essere moderno.
Abitudini che tengono uno script analizzabile
Sei abitudini che tengono uno script facile da leggere e rapido da validare.
- Chiudete la parentesi mentre la aprite Così la compagna è già lì quando riempite il centro. Infatti è una piccola abitudine che rimuove la classe di errore di sintassi più costosa.
- Scrivete in modalità strict Un modulo è strict per default, e uno script può chiederlo con una direttiva sulla prima riga. Perché la modalità strict trasforma diversi sbagli silenziosi in errori, il vostro motore si ferma su di essi invece di proseguire in silenzio.
- Preferite const, poi let Un var dichiarato dentro un blocco appartiene alla funzione, e lì si nasconde il riuso accidentale. Perciò due nomi che sembrano separati possono essere uno.
- Tenete un’istruzione per riga Un motore inserisce i punti e virgola mancanti, e non indovina sempre quello che intendevate. Perché un’istruzione per riga rimuove l’ambiguità, il lettore non deve mai tirare a indovinare.
- Validate prima di minificare Un minificatore si fida del suo ingresso, quindi uno script rotto esce rotto e più difficile da leggere. Di conseguenza controllate prima il file leggibile, dove i numeri di riga significano qualcosa.
- Incollate l’uscita compilata Un’annotazione di tipo non è JavaScript, quindi un file che ne porta una non passerà. Perciò lanciate prima il compilatore e controllate quello che ha prodotto.
Sei modi in cui uno script non passa l’analisi
Ognuno di questi ferma il file intero, perciò nessuno passa inosservato una volta accaduto.
Una parentesi chiusa nell’ordine sbagliato
Attenzione qui. Un motore vede una coppia che non combacia invece di un segno mancante, perciò la nota punta alla riga che sembra sbagliata e non a quella che lo è.
Una virgoletta dentro una stringa dello stesso tipo
Una virgoletta non protetta chiude la stringa troppo presto. Perché il tokenizzatore legge poi il resto come codice, l’errore compare molte righe dopo lo sbaglio.
Una barra che significa divisione
Due righe sotto un punto e virgola mancante, una barra può cominciare un’espressione regolare invece di dividere. Di conseguenza un segno mancante diventa un errore confuso su un modello.
Un template che non chiude mai
Un apice inverso lasciato aperto inghiotte il resto del file. Così la nota nomina l’apice di apertura e la fine dell’ingresso invece della riga che volevate correggere.
Una virgola dove andava un punto e virgola
Dentro un oggetto una virgola è giusta e dentro un blocco è sbagliata. Perché le due si somigliano a prima vista, questa sopravvive a una lettura attenta.
Una parola chiave usata come nome
Qualcosa chiamato class o default passa in una posizione e non in un’altra. Perciò un nome che funzionava in un file può essere un errore in quello dopo.
Domande sul validatore JavaScript
Questo validatore JavaScript è gratuito?
Sì. Non c’è account, non c’è limite e non c’è piano a pagamento. Così validate tutti gli script che volete.
Esegue il mio codice?
Mai. Il lettore prende lo script come testo e lo analizza, e non chiama nessuna funzione. Per questo un frammento di uno sconosciuto non può agire mentre lo guardate.
Che cosa controlla?
Sei famiglie: equilibrio delle parentesi, stringhe e template non chiusi, token che la grammatica rifiuta, parole riservate usate come nomi, duplicati in uno stesso ambito e return, break o yield fuori posto.
Quale versione di JavaScript accetta?
Lo standard attuale, fino a ES2024. Così una funzione freccia, un concatenamento opzionale, un campo di classe e un await di primo livello in un modulo passano tutti.
Trova gli errori di esecuzione?
No. Un errore di esecuzione richiede un motore che lanci il codice, e quello è un altro lavoro. Di conseguenza, questa pagina risponde solo alla domanda della grammatica.
Perché segnala un solo errore?
Perché l’analisi si ferma al primo guasto. Tutto quello che viene dopo è una supposizione, e un fatto serve più di cento supposizioni.
Il mio script viene caricato da qualche parte?
No. Tutto il controllo gira in questa scheda del browser. Così uno script sotto clausola di riservatezza resta dove si trova.
Posso validare un frammento invece di un file intero?
Sì. Una singola funzione va bene finché le sue parentesi si chiudono. I numeri di riga si riferiscono poi alle righe che avete incollato.
Capisce JSX o TypeScript?
Non direttamente, perché sono estensioni e non JavaScript. Lanciate quindi prima il compilatore e validate quello che produce.
Qual è la differenza tra un errore di sintassi e un errore di tipo?
Un errore di sintassi significa che nessuna parte del file è girata. Un errore di tipo accade in esecuzione, su una riga che invece è passata. Per questo i due chiedono un debug diverso.
Controlla il supporto dei browser?
No. Un’istruzione può essere valida e non fare nulla nel browser che conta. Infatti grammatica e supporto sono due domande separate.
Può correggere l’errore al posto mio?
No, ed è voluto. Una correzione automatica può trasformare un errore chiaro in un cambio di comportamento silenzioso, che tuttavia si trova molto più difficilmente della nota.
Perché il mio codice viene segnalato per una barra?
Una barra è una divisione oppure l’inizio di un’espressione regolare, e la risposta dipende dal token precedente. Senza un punto e virgola al posto giusto il lettore deve sceglierne uno, e a quel punto la nota dice quale.
Funziona con un modulo?
Sì. Scegliete il tipo di sorgente modulo e poi import ed export diventano validi, mentre uno script semplice legge entrambi come un errore. Inoltre, un modulo tratta let, static e yield come riservate, quindi un nome che passa in uno script qui può fallire.
Posso validare un file minificato?
Sì, tuttavia i numeri di riga servono molto meno. Perché un file minificato è spesso una sola riga lunghissima, tornate al sorgente leggibile per la correzione.
Conta qualcosa?
Sì. Il riepilogo riporta righe, token e caratteri, cosa che serve quando controllate se un incolla ha perso qualcosa alla fine.
È la stessa cosa di un linter?
No. Un linter segnala problemi di stile e variabili non usate, di cui un analizzatore non si cura. Per questo un risultato pulito qui vuol dire che il file passa, e niente di più.
Funziona sul telefono?
Sì. I pannelli si impilano e le note vanno a capo. Così un controllo rapido riesce anche dal telefono, tuttavia un file lungo è più comodo con la tastiera.
Posso scaricare le note?
Sì. Il download scrive le note in un file di testo, cosa comoda quando un ticket chiede i numeri di riga esatti.
Serve un account o un’estensione?
No. Non c’è registrazione, non c’è plugin e non c’è estensione da aggiungere. Così chiudete la scheda appena lo script passa.
Strumenti che vanno con questo
Quattro pagine a cui lo stesso lavoro porta spesso.
Minificatore JavaScript
Appena lo script passa, togliete gli spazi e i commenti. Perché un browser scarica ogni byte, minificate dopo aver validato e non prima.
Apri lo strumento →Abbellitore di codice
Un file che passa può comunque leggersi male. Reindentatelo quindi e sistemate lo stile delle graffe prima della revisione successiva.
Apri lo strumento →Formattatore JSON
La maggior parte dei guasti di script qui viene dai dati invece che dalla logica. Aprite quindi il payload e controllate che passi anche lui.
Apri lo strumento →Validatore CSS
L’altra metà di una build front-end. Perché il browser scarta in silenzio una dichiarazione con un errore di battitura, quel foglio merita lo stesso controllo.
Apri lo strumento →
Trovate la riga che il motore rifiuterebbe
Incollate lo script, leggete la prima nota, correggetela e poi lanciatelo di nuovo. Niente viene eseguito e niente viene caricato. Inoltre, la maggior parte dei file passa prima che bolla l’acqua, perché la nota vi dice quale carattere guardare.