Messaggio
SyntaxError: Expected - Previsto ';' (Edge) SyntaxError: missing - Mancante; prima della dichiarazione (Firefox)
Tipo di errore
Cosa è andato storto?
C'è un punto e virgola (;
) mancante. Le dichiarazioni in JavaScript devono essere determinate da il punto e virgola (;
). Alcune di loro sono soggette all' Inserzione Automatica a Semicolonne (ASI), ma in questo caso è necessario specificare la semicolonna, in modo che JavaScript legga correttamente il codice sorgente.
In ogni caso, molto spesso, questo errore è solo una conseguenza di un altro, come lo scorretto uso degli apici, o l'uso errato di var
. Potresti anche avere troppe parentesi da qualche parte. Ricontrolla la sintassi del codice quando appare questo errore.
Esempi
Stringhe senza escape (\)
Questo errore accade frequentemente quando si usa un apostrofo senza carattere di escape. Il motore di JavaScript si aspetta la fine di una stringa. Per esempio:
var foo = 'Tom's bar';
// (') interrompe è atteso ("..'..") o ('..\'..')
// SyntaxError: missing ; prima della dichiarazione
Per risolvere, usa le virgolette oppure un carattere di escape (backslash):
var foo = "Tom's bar"; <- in questo modo
var foo = 'Tom\'s bar'; <- in questo modo
Dichiarare le proprietà con var
Non puoi dichiarare le proprietà di un oggetto o di un array con una dichiarazione var
.
var obj = {};
var obj.foo = 'hi';
// SyntaxError missing ; before statement
var array = [];
var array[0] = 'there';
// SyntaxError missing ; before statement
Prova invece ad omettere la parola chiave var
:
var obj = {};
obj.foo = 'hi';
var array = [];
array[0] = 'there';