Warum gibt 2..toString()
2
zurück, aber 2.toString()
löst diesen Fehler aus?
Beispiel:
%Vor% 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: Ссылка
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.
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.
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.
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.
2..toString()
wird als 2.0.toString()
interpretiert.
Tatsächlich ist 2.
eine Zahl: console.log(typeof 2.);
wird geben: Zahl
Tags und Links javascript