Ответ 1

База для строк, начинающихся с 0, может быть восьмеричной (когда радикс не указан - и в зависимости от браузера).

Вы ищете:

parseInt("09", 10)

Смотрите документацию для parseInt:

Если radix равен undefined или 0, JavaScript предполагает следующее:

  • Если входная строка начинается с "0x" или "0X", то основание равно 16 (шестнадцатеричное).
  • Если начальная строка начинается с "0", радиус равен восьми (восьмеричный). Эта функция нестандартна, и некоторые реализации намеренно не поддерживают ее (вместо этого используют radix 10). По этой причине всегда указывайте radix при использовании parseInt.
  • Если входная строка начинается с любого другого значения, то радиус равен 10 (десятичный).

Комментарии для необязательного параметра radix (второго в моем примере) говорят следующее:

Пока этот параметр не является обязательным, всегда указывает его, чтобы устранить недоразумение читателя и гарантировать предсказуемое поведение.

Ответ 2

В начале 0 указано значение угля "020" равно 16, "07" равно 7, в восьмеричной системе нет цифры "9", следовательно, никакого преобразования!

Используйте parseInt ( "09", 10), чтобы получить значение 9.