SyntaxError: illegal character

Fehlermeldung

SyntaxError: illegal character (Firefox)
SyntaxError: Invalid or unexpected token (Chrome)

Fehlertyp

Was ist falsch gelaufen?

Es gibt ein nicht valides oder nicht erwartetes Token, welches nicht an eine Position im Code passt. Man sollte einen Editor mit Syntaxhighlighting benutzten und vorsichtig nach Verwechselungen suchen, wie einem Minuszeichen ( - ) und einem Dashzeichen ( – ) oder einfachen AnfĂŒhrungszeichen ( " ) und anderen AnfĂŒhrungszeichen ( “ ).

Beispiele

Verwechseltes Zeichen

Einige Zeichen sehen sehr Ă€hnlich aus, aber fĂŒhren dazu, dass der Code nicht interpretiert werden kann. Bekannte Beispiele dafĂŒr sind AnfĂŒhrungszeichen, das Minus oder das Semikolon (griechisches Fragezeichen (U+37e) sieht genauso aus)

“This looks like a string”;  // SyntaxError: illegal character
                             // “ und ” sind nicht ", aber sehen so aus

42 – 13;                     // SyntaxError: illegal character
                             // – sind nicht -, aber sieht so aus

var foo = 'bar';             // SyntaxError: illegal character
                             // <37e> sind nicht ;, aber sieht so aus

Das funktioniert:

"This is actually a string";
42 - 13;
var foo = 'bar';

Einige Editoren und IDEs werden darauf hinweisen oder dieses anderes hervorheben, aber nicht alle. Wenn manchmal so etwas im Code passiert und man in der Lage ist das Problem zu finden, ist es oft das beste die Zeile zu löschen und sie neu einzutippen.

Vergessene Zeichen

Es passiert schnell, dass man ein Zeichen vergisst.

var colors = ['#000', #333', '#666'];
// SyntaxError: illegal character

Man muss das fehlende AnfĂŒhrungszeichen ergĂ€nzen '#333'.

var colors = ['#000', '#333', '#666'];

Nicht sichtbare Zeichen

Beim Kopieren und EinfĂŒgen von Code aus externen Quellen kann es nicht valide Zeichen geben. Zum Beispiel:

var foo = 'bar';​
// SyntaxError: illegal character

Wenn man den Code in einem Editor wie Vim anschaut, bemerkt man, dass ein breitenloses Leerzeichen (ZWSP) (U+200B) benutzt wird.

var foo = 'bar';​<200b>

Siehe auch