Christian Kruse: parseInt("08") = 0 ??

Beitrag lesen

你好 Twilo,

Warum ergibt parseInt("08") nicht 8?

javascript:alert(parseInt('07'));  --> 7
javascript:alert(parseInt('08'));  --> 0

parseInt() interpretiert die Zahl wegen der fuehrenden 0 als Oktal-Zahl.
Und das Oktal-System hat bekannterweise nur 8 Ziffern (0-7) -- die 0 ist
also ein Fehlerwert.

wenn ich das in meiner Adresszeile von Opera 8/b2 einfüge, kommt 8 bei
raus.

Ja, dummerweise ist das eine recht bloede Freiheit, die der Standard da
bereit haelt. Im Standard steht eigentlich, dass nur 0x oder 0X eine
spezielle Bedeutung hat: es leitet Zahlen im Hex-Format ein. Aber etwas
spaeter in einer Note heisst es, dass die Implementation die Freiheit hat,
eine Zahl mit fuehrender 0 und ohne folgendes X oder x als Oktal-Zahl zu
bewerten, wenn die Basis nicht angegeben wurde. Das fuehrt dann leider bei
unterschiedlichen Browsern zu unterschiedlichen Ergebnissen.

再见,
CK

--
Der Verstand ist der Hausherr, der Koerper sein Gast.