Можно создать дубликат:
Workarounds for JavaScript parseInt octal bugПочему parseInt ("09") возвращает 0, а parseInt ("07") возвращает 7?
Почему
parseInt("09")
возвращение 0
но
parseInt("07")
возврат 7
?
Можно создать дубликат:
Workarounds for JavaScript parseInt octal bugПочему parseInt ("09") возвращает 0, а parseInt ("07") возвращает 7?
Почему
parseInt("09")
возвращение 0
но
parseInt("07")
возврат 7
?
Основание для струн, начинающихся с 0
, может быть восьмеричным (когда ради не указано - и в зависимости от браузера).
Вы ищете:
parseInt("09", 10)
Смотрите документацию по parseInt
:
Если радикс не определен или 0, JavaScript принимает следующее:
- Если строка ввода начинается с «0x» или «0X», радиус 16 (шестнадцатеричный).
- Если входная строка начинается с «0», то радиус равен восьми (восьмеричный). Эта функция нестандартна, и некоторые реализации намеренно не поддерживают ее (вместо этого используют radix 10). По этой причине всегда указывайте радиус при использовании parseInt.
- Если входная строка начинается с любого другого значения, радиус равен 10 (десятичный).
Комментарии к radix
необязательный параметр (второй в моем примере) говорит, что это:
Хотя этот параметр не является обязательным, всегда указывать это устранить читателя путаницы и гарантировать предсказуемое поведение.
Неверно. База по умолчанию для 'parseInt' - это« интеллектуальная догадка », как указано в MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt. Даже это поведение зависит от разных особенностей браузера. –
@AndrewWhitaker - Да, ответ уже исправлен и добавлена информация из MDN. – Oded
Ведущий 0 указывает, что значение угля «020» равно 16, «07» равно 7, в восьмеричной системе нет цифры «9», следовательно, никакого преобразования!
Использование ParseInt ("09", 10), чтобы получить значение 9.
Не большой поклонник lmgtfy ответов, но вы пробовали прибегая к помощи точной фразы: "Почему ParseInt (09) возвращает 0"? – georg
Так много вопросов уже ответили на parseInt() и с помощью правильного основания. –
Это javascript gotcha. Проверьте [this] (http://stackoverflow.com/questions/850341/workarounds-for-javascript-parseint-octal-bug) Ответ на StackOverflow для получения дополнительной информации – Kyle