Resultados estranhos de parseInt explicados

O método parseInt produz resultados estranhos quando tentamos converter certas strings que começam com “0”.

parseInt("08") //=> 0
parseInt
("09") //=> 0

A razão disso é que o método parseInt tenta adivinhar a base do sistema numérico. Ele assume incorretamente a base octal aqui.

No entanto, a base do número pode ser especificada como um segundo parâmetro:

parseInt("08", 10) //=> 8
parseInt
("09", 10) //=> 9