Angenommen, ich schreibe 0.5
wie 0.-5
auf unerwartete Weise, aber es kann immer noch ausgeführt werden. Was ist 0.
in 0.-5
tun , so dass es nach wie vor zu laufen und auswertet , kann sie -5?
Ich habe auch versucht, alert(0.-5+1)
welche Drucke -4, ignoriert JavaScript 0.
in 0.-5
?
javascript
numbers
ocomfd
quelle
quelle
0.
ist wie0.0
. Oder einfach nur0
.0.-5
ein "unerwarteter Weg" ist?0.-5
ein Syntaxfehler und würde keine Float-Literale mit einer nachgestellten Periode zulassen, sondern die Leute zwingen,.0
am Ende zu schreiben ..
Sie daran hindert, etwas zu schreiben wie123.toString(16)
(Ein üblicher Trick ist die Verwendung123..toString(16)
, was wirklich so ist(123.).toString(16)
)Antworten:
Nachgestellte Ziffern nach a
.
sind optional:So
bewertet zu
das ist nur
-5
. Ähnlich,ist
welches ist
oder
-4
.quelle
0.-5
konnte erfolgreich als0.
[1] analysiert werden ,-
und5
. Unten finden Sie den abstrakten Syntaxbaum für den vom AST-Explorer generierten Ausdruck:Dies ist (auf unerwartete Weise) gültiges JavaScript und wird ausgewertet
-5
.[1] Gemäß der Grammatik für numerische Literale sind die Dezimalstellen und Exponententeile optional:
quelle
In JS können Sie eine Zahl mit optionalem Dezimalpunkt ausdrücken.
Und ab dem Kommentar von Tvde1 kann auch jede Number-Methode angewendet werden.
Mit dieser Syntax können wir die Number-Funktionen ohne Klammern ausführen.
In dieser Frage erfahren Sie, warum.
quelle
5..toString()
.1.0
Gleitkomma, aber1.
eine ganze Zahl.float
s haben Methoden und5.
ist afloat
.(1).toMethod()
legal ist, das(1.)
ordnungsgemäße Parsen verbietet . Der traditionellste Ansatz zum Parsen (gieriges Lexen von Token, einschließlich Literalen, dann Parsen) erzeugt das Javascript-Verhalten.Ich würde denken, dass es bei der eigentlichen Antwort nicht um den Dezimalpunkt geht, sondern um das Minuszeichen: Wird das nicht als Operator interpretiert, wenn ihm etwas vorausgeht, das wie eine Zahl aussieht?
quelle
'0.' oder '0' ist in JavaScript identisch, da der Typ für Zahlen eindeutig ist und als Zahl bezeichnet wird. Der Minus-Operator steht zwischen Zahlen. Versuchen Sie immer, das, was Sie übergeben, in eine Zahl umzuwandeln. In Python ist erstens ein Float und zweitens eine Integer anders, da es mehrere Typen gibt.
quelle