2012-06-26 2 views
-1

Можно создать дубликат:
Workarounds for JavaScript parseInt octal bugОшибка в методе parseInt Javascript?

Синтаксический строку с помощью метода ParseInt возвращает неверный вывод.

Код:

parseInt("08"); 

Освобожденные Выход:

8 

Реальный выход:

0 

Код [Это возвращает выход правильно]:

parseInt("8") 

Выход:

8 

Почему это происходит?

+0

Простой прибегая к помощи также решил это: http://www.w3schools.com/ jsref/jsref_parseint.asp – Michael

+0

Идти к вашему правильному заголовку вопроса также приводит ответ ... – thirtydot

ответ

2

Вам необходимо указать базу:

parseInt("08",10); //=>8 

В противном случае JavaScript не знает, если вы находитесь в десятичном, шестнадцатеричном или двоичном. (Это лучшая практика, вы всегда должны использовать, если вы используете ParseInt.)

1

Вы должны сказать ParseInt его 10 на основе:

parseInt("08", 10); 

JavaScript parseInt() Function

Если параметр Radix не указан, JavaScript предполагает следующее:

Если строка начинается с «0x», то основанием является 16 (шестнадцатеричный)

Если строка начинается с «0», радиус равен 8 (восьмеричный). Эта функция осуждается Если строка начинается с любым другим значением, основание равно 10 (десятичные)

http://jsfiddle.net/YChK5/

0

Строки с ведущим нулем часто интерпретируются как восьмеричные значения. Поскольку восьмеричные значения означают, что только числа из 0-7 имеют значение, «08» преобразуется в «0».Укажите базу, чтобы исправить эту проблему:

parseInt("08", 10); // base 10 

Как обычно, MDN является хорошим источником информации: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt#Octal_Interpretations_with_No_Radix

Смежные вопросы