Welche Regeln gelten für das Aufrufen von Funktionen für Zahlenliterale in JS? [Duplikat]

Diese Frage hat hier bereits eine Antwort:

Warum kann ich mit einem einzelnen Punkt nicht auf eine Eigenschaft einer Ganzzahl zugreifen? 4 Antworten

Seit ich mit JS arbeite, habe ich gedacht, dass die einzige Möglichkeit, eine Funktion für ein Zahlenliteral aufzurufen, darin besteht, sie in die Ausdrucksposition zu bringen, indem sie mit Parens umhüllt wird, wie folgt:

<code>1.toString();
// SyntaxError: identifier starts immediately after numeric literal

(1).toString();
// "1"
</code>

Heute ist es mir eingefallen, dies zu versuchen:

<code>0.1.toString();
// "0.1"
</code>

Warum funktioniert das? Ein Hinweis auf die offizielle Spezifikation wäre großartig.

Bearbeiten Mehrdeutigkeit war mein erster Gedanke, aber dann entschied ich, dass es keine Mehrdeutigkeit gibt1.toString() entweder. Es ist tiefer als ich zuerst dachte, aber ich denke immer noch, dass ich Recht habe. Hier ist der Grund:

Eigenschaftennamenkönnen Beginnen Sie mit Ziffern

<code>var obj = { "1" : 1, "2" : 2 };
</code>

Eigenschaftsnamen, die mit Ziffern beginnen, können nur in eckigen Klammern angegeben werden

<code>obj.1;
// SyntaxError: Unexpected token ILLEGAL
obj['1'];
// 1
</code>

Ebenfalls:

<code>1['toString']();
// '1'
</code>

Deshalb,1. gefolgt von einer Nicht-Ziffer wird immer ein Methodenaufruf oder ein Eigenschaftszugriff sein, niemals eine Dezimalzahl. Gleichfalls,1. gefolgt von einer Ziffer ist immer eine Dezimalzahl, niemals ein Methodenaufruf oder ein Eigenschaftszugriff.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage