SyntaxError: identifier starts immediately after numeric literal
Der JavaScript-Ausnahmefehler "identifier starts immediately after numeric literal" tritt auf, wenn ein Bezeichner mit einer Ziffer beginnt. Bezeichner dürfen nur mit einem Buchstaben, Unterstrich (_) oder Dollarzeichen ($) beginnen.
Meldung
SyntaxError: Invalid or unexpected token (V8-based) SyntaxError: identifier starts immediately after numeric literal (Firefox) SyntaxError: No identifiers allowed directly after numeric literal (Safari)
Fehlertyp
Was ging schief?
Die Namen von Variablen, genannt Bezeichner, müssen bestimmten Regeln entsprechen, die Ihr Code einhalten muss!
Ein JavaScript-Bezeichner muss mit einem Buchstaben, Unterstrich (_) oder Dollarzeichen ($) beginnen. Sie dürfen nicht mit einer Ziffer anfangen! Nur folgende Zeichen können Ziffern (0-9) sein.
Beispiele
Variablennamen, die mit numerischen Literalen beginnen
Variablennamen dürfen in JavaScript nicht mit Zahlen beginnen. Folgendes schlägt fehl:
const 1life = "foo";
// SyntaxError: identifier starts immediately after numeric literal
const foo = 1life;
// SyntaxError: identifier starts immediately after numeric literal
Sie müssen Ihre Variable umbenennen, um die führende Zahl zu vermeiden.
const life1 = "foo";
const foo = life1;
In JavaScript gibt es eine syntaktische Besonderheit beim Aufrufen von Eigenschaften oder Methoden auf Zahlen. Wenn Sie eine Methode auf einer ganzen Zahl aufrufen möchten, können Sie nicht unmittelbar ein Punkt nach der Zahl verwenden, da der Punkt als Beginn eines Dezimalbruchs interpretiert wird, wodurch der Parser den Namen der Methode als Bezeichner unmittelbar nach einem Zahl-Literal erkennt. Um dies zu vermeiden, müssen Sie entweder die Zahl in Klammern setzen oder einen Doppelpunkten verwenden, wobei der erste Punkt ein Dezimalpunkt für das Zahl-Literal ist und der zweite Punkt der Eigenschafts-Zugriff ist.
alert(typeof 1.toString())
// SyntaxError: identifier starts immediately after numeric literal
Korrekte Möglichkeiten, um Methoden auf Zahlen aufzurufen:
// Wrap the number in parentheses
alert(typeof (1).toString());
// Add an extra dot for the number literal
alert(typeof 2..toString());
// Use square brackets
alert(typeof 3["toString"]());
Siehe auch
- Lexikalische Grammatik
- Grammatik und Typen Leitfaden