Если 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.