Warum funktioniert 2..toString ()? [Duplikat]

7

Warum gibt 2..toString() 2 zurück, aber 2.toString() löst diesen Fehler aus?

Beispiel:

%Vor%     
Larry Battle 17.03.2013, 08:08
quelle

5 Antworten

4

2 ist nur eine Zahl, es gibt keine Methoden zum Aufrufen.

2. kann in eine Zeichenfolge umgewandelt werden, die ein Objekt ist (d. h. '2.0' ), daher kann die Methode verwendet werden.

Nur 2.toString() wird als 2.0tostring() analysiert, was natürlich keinen Sinn ergibt.

Betrachten wir, wie die beiden analysiert werden:

vs

Das Werkzeug, um diese zu erzeugen, ist übrigens hier: Ссылка

    
Rich Bradshaw 17.03.2013, 08:55
quelle
8

Das liegt daran, dass 2. als 2.0 analysiert wird, also ist 2..toString() äquivalent zu 2.0.toString() , was ein gültiger Ausdruck ist.

Auf der anderen Seite wird 2.toString() als 2.0toString() analysiert, was ein Syntaxfehler ist.

    
Frédéric Hamidi 17.03.2013 08:12
quelle
4
%Vor%

Der Interpreter sieht 2 und denkt "Oh, eine Zahl!" Dann sieht es den Punkt und denkt "Oh, eine Dezimalzahl!" Und dann geht es zum nächsten Zeichen und sieht ein t , und es wird verwirrt. " 2.t ist keine gültige Dezimalzahl", heißt es, da es einen Syntaxfehler auslöst.

%Vor%

Der Interpreter sieht 2 und denkt "Oh, eine Zahl!" Dann sieht es den Punkt und denkt "Oh, eine Dezimalzahl!" Dann sieht es einen anderen Punkt und denkt: "Oh, ich denke, das war das Ende unserer Zahl. Jetzt betrachten wir die Eigenschaften dieses Objekts (die Zahl 2.0)." Dann ruft es die Methode toString des Objekts 2.0 auf.

    
Casey Chu 17.03.2013 08:18
quelle
2

Ссылка

Da das Number-Objekt die toString-Methode des Object-Objekts überschreibt, müssen Sie zuerst explizit paranthesis verwenden, um anzuzeigen, dass es sich um eine Zahl und nicht um ein Objekt handelt.

Ich nehme an, dass 2. es implizit als float definiert, das dann die Methode .toString() des Number-Objekts und nicht die Methode des Object-Objekts verwenden kann.

    
Samuel Liew 17.03.2013 08:15
quelle
1

2..toString() wird als 2.0.toString() interpretiert.

Tatsächlich ist 2. eine Zahl: console.log(typeof 2.); wird geben: Zahl

    
Iswanto San 17.03.2013 08:15
quelle

Tags und Links