Proč má radix pro parseInt JavaScriptu výchozí hodnotu 8?

Výchozí nastavení radixu na 8 (pokud řetězec začíná 0) ve funkci parseInt JavaScriptu mě štve, jen proto, že stále zapomínám předat volitelný druhý argument jako 10. Hledám odpověď, která by mi řekla, proč má smysl mít výchozí hodnotu 8.

Odpověď

„Výchozí“ je pouze 8, pokud vstupní řetězec začíná 0. Toto je nešťastné přenesení z C a C++.

Můžete použít Number('0123') místo toho, nebo, jak jste řekl v otázce, parseInt('0123', 10) .

Jak mohu obejít osmičkové chování parseInt v JavaScriptu?

Můžete mi o tomto přenosu říct více?

  • Funkce Javascript eval vrací osmičkovou hodnotu
  • Oktální číselné literály:Kdy? Proč? někdy?

Poznámka:Přísný režim ECMAScript odstraňuje osmičkovou syntaxi.