SyntaxError: missing ; before statement

Message

SyntaxError: Expected ';' (Edge)
SyntaxError: missing ; before statement (Firefox)

Type d'erreur

Quel est le problème ?

Un point-virgule est absent quelque part. En JavaScript, les instructions doivent se terminer par des points-virgules. Certaines de ces instructions sont traitées par l'insertion automatique de point-virgule (ASI pour Automatic Semicolon Insertion), mais pour le code qui provoque l'erreur, un point-virgule est nécessaire afin que le moteur JavaScript puisse analyser le code source correctement.

La plupart du temps, cette erreur est la conséquence d'une autre erreur : ne pas « fermer » les chaînes de caractères correctement ou utiliser var de façon incorrecte. Il peut également y avoir trop de parenthèses à un endroit. Lorsque cette erreur apparaît, faites attention à la syntaxe du code environnant.

Exemples

Les chaînes laissées ouvertes

Cette erreur est parfois simplement provoquée par une chaîne dont les quotes ne sont pas échappées correctement ou qui ne sont pas correctement délimitées. Le moteur JavaScript s'attend donc à trouver la fin de la chaîne. Par exemple :

js
var toto = 'Ouvrir l'œil';
// SyntaxError: missing ; before statement

Pour éviter cela, on pourra utiliser des doubles quotes ou échapper l'apostrophe :

js
var toto = "Ouvrir l'œil";
var toto = "Ouvrir l'œil";

Déclarer des propriétés avec var

On ne peut pas déclarer de propriétés sur un objet ou un tableau avec une déclaration var.

js
var obj = {};
var obj.toto = "coucou"; // SyntaxError missing ; before statement

var array = [];
var array[0] = "monde"; // SyntaxError missing ; before statement

Pour éviter cela, on n'utilisera pas le mot-clé var qui est inutile dans ces cas :

js
var obj = {};
obj.toto = "coucou";

var array = [];
array[0] = "monde";

Mauvais mots-clés

Il peut arriver, notamment lorsqu'on provient d'un autre langage de programmation, d'utiliser des mots-clés qui n'ont pas du tout le même sens en JavaScript :

js
def print(info){
  console.log(info);
}; // SyntaxError missing ; before statement

À la place de def, on utilisera le mot-clé function :

js
function print(info) {
  console.log(info);
}

Voir aussi