parseInt ("010", 10); gegen parseInt (010, 10);

Ich bin verwirrt über ein bestimmtes Ergebnis vonparseInt. Ich dachte, ich verstehe die meisten seiner Macken, aber dieser ist unklar.

parseInt("010", 10); // 10

parseInt(010, 10);   // 8, but expecting 10

Im zweiten Beispiel habe ich den richtigen Radix angegeben. Was ist der Grund für das unerwartete Ergebnis?

Lösung

Das Problem liegt im oktalen Literal. Wenn einer Zahl eine 0 vorangestellt wird, wird sie als oktales Literal betrachtet.

Wenn Sie ausführen

console(010); // 8

im nicht-Skript-Modus erhalten Sie 8. Der Grund, warum parseInt das hat, was ich für seltsam hielt, war, dass ich im Wesentlichen ausgeführt habe

parseInt(8, 10); // 8

und erwarten 10.

ParseInt sah nie 010, nur 8. Vielen Dank an alle für ihre Hilfe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage