SyntaxError: missing ; before statement

Message

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

Type d'erreur

SyntaxError.

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 :

var toto = 'Ouvrir l'Ňďil';
// SyntaxError: missing ; before statement

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

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.

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 :

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 :

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

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

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

Voir aussi