Javascript 0 am Anfang der Nummer

9

Ich will nur js Logik mit 0-s am Anfang der Zahl verstehen. Zum Beispiel

%Vor%

Kann jemand erklären, wie es funktioniert, warum es im ersten Beispiel funktioniert und führende Nullen ignoriert, aber im zweiten Beispiel gibt es mir einen SyntaxError

Danke

    
Gor 27.01.2016, 21:05
quelle

3 Antworten

19

Führt 0 für ein numerisches Literal aus, gibt an, dass eine oktale Ganzzahl die Absicht ist, wenn die zweite Ziffer nicht 8 oder 9 ist. In diesem Fall wird das führende 0 ignoriert.

Da numerische oktale Literale Ganzzahlen sein müssen, ist 02.5 fehlerhaft.

Dieses Verhalten wurde 2014 als Fehler in Firefox protokolliert, aber da es so viel JavaScript-Code in der Welt gibt und so viel davon (wahrscheinlich unbeabsichtigt) darauf beruht, dass 09.3 kein Syntaxfehler ist, wurde der Fehler als "markiert" markiert. WONTFIX ".

Wie in einem Kommentar unten erwähnt, sind im "strikten" Modus Oktalkonstanten nicht erlaubt.

    
Pointy 27.01.2016, 21:15
quelle
5

Eine führende Null gibt eine oktale (Basis 8) Zahl an (im Gegensatz zu einer dezimalen - Basis 10 - Zahl).

Ein führender 0x zeigt eine Hexadezimalzahl und ein führender 0b eine Binärzahl an.

Daher ist 09.3 standardmäßig dezimal, da die Ziffer "9" nicht in Oktalschreibweise existiert.

Edit (create Evan Trimboli, unten): 02.5 löst eine Exception aus, da oktale Literale Integer sein müssen.

    
andydavies 27.01.2016 21:12
quelle
0

Es ist spät für diese Antwort, aber immer noch ein Update von meiner Seite. Wie von Pointy im strikten Modus gesagt, ist die Oktalkonstante nicht erlaubt.

%Vor%

löst eine Ausnahme aus

%Vor%

Auch wenn wir die zweite Ziffer als 8 oder 9 hinzufügen, sind die führenden 0 in strict mode

nicht erlaubt %Vor%

Es löst auch eine Ausnahme aus

%Vor%

Es ergab auch keinen Sinn, weil die führenden Nullen dieselben Werte ohne führende Nullen haben. Aber es muss vorsichtig sein, wenn Sie die Werte von der anderen Seite erhalten.

    
Lokesh 06.04.2018 06:50
quelle