Похоже, что проблема изменилась в большинстве браузеров.
Firefox 51.0.1 (64-разрядная версия)
parseInt("09") // 9
Chrome 55.0.2883.95 (64-разрядная версия)
parseInt("09") // 9
Safari 10.0 (12602.1.50.0.10)
parseInt("09") // 9
=====
Рекомендуемая практика
Сказав это, просто для большей безопасности и во избежание проблем используйте параметр base / radix, как предложено в принятом ответе .
parseInt("09", 10) // 9
Дополнительный тест
Я просто хотел проверить это, если аргумент не является строкой.
Chrome & Safari дает точный результат. Firefox тоже возвращает правильный результат, но с предупреждением.
parseInt(09) // 9. (Warning: SyntaxError: 09 is not a legal ECMA-262 octal constant)