Почему parseInt() возвращает неожиданный результат при передаче строки с начальным нулем?

parseInt('1') = 1
parseInt('01') = 1
parseInt('5') = 5
parseInt('05') = 5
parseInt('8') = 8

Но почему:
parseInt('08') = 0
parseInt('09') = 0

Ответ 1

Всегда используйте перегрузку, которая принимает радиус в качестве второго параметра:

parseInt('011',10) = 11

Ответ 2

вот подсказка:

parseInt('011') = 9

Если он начинается с 0, он анализируется как восьмеричное число.

Ответ 3

Цифры, начинающиеся с 0 (not 0x), являются восьмеричными числами. Поэтому 8 и 9 не являются действительными восьмеричными числами.

Ответ 4

При преобразовании строки в десятичное число в JavaScript вы можете использовать оператор плюс вместо parseInt или parseFloat, как в этом примере:

x = + ( "12" );//для x присваивается номер 12 после его преобразования из строки "12"

x = + ( "1" + "2" );//для x присваивается номер 12 после его преобразования из строки "12"

Ответ 5

Другие ответили, почему часть.

Чтобы удалить, вы можете использовать parseFloat() или parseInt (значение, база) Fiddle