Ответ 1
База для строк, начинающихся с 0
, может быть восьмеричной (когда радикс не указан - и в зависимости от браузера).
Вы ищете:
parseInt("09", 10)
Смотрите документацию для parseInt
:
Если radix равен undefined или 0, JavaScript предполагает следующее:
- Если входная строка начинается с "0x" или "0X", то основание равно 16 (шестнадцатеричное).
- Если начальная строка начинается с "0", радиус равен восьми (восьмеричный). Эта функция нестандартна, и некоторые реализации намеренно не поддерживают ее (вместо этого используют radix 10). По этой причине всегда указывайте radix при использовании parseInt.
- Если входная строка начинается с любого другого значения, то радиус равен 10 (десятичный).
Комментарии для необязательного параметра radix
(второго в моем примере) говорят следующее:
Пока этот параметр не является обязательным, всегда указывает его, чтобы устранить недоразумение читателя и гарантировать предсказуемое поведение.