Насколько я понимаю, восьмеричные литералы (формы 023) недействительны в ECMAScript 5, но широко поддерживаются. В ECMAScript 6 они теперь поддерживаются в формате 0o23 или 0O23. Что меня смущает, так это поведение чисел, которые не являются допустимыми восьмеричными числами, но имеют предшествующий ноль (019). Кажется, что они ведут себя как обычные десятичные числа.
Таким образом, без строгого режима я могу получить такие вещи, как 022 === 018 (true), потому что 022 интерпретируется как восьмеричное, а 018, по-видимому, обрабатывается как десятичное, поскольку оно не может быть восьмеричным.
В строгом режиме я получаю сообщение об ошибке при использовании действительного восьмеричного числа в этом формате (например, 022), но не при использовании числа с нулевым префиксом, которое не может быть допустимым восьмеричным числом (например, 018).
Мне это кажется очень странным, так как JS (строгий режим) говорит мне, что я могу поставить 0 перед своим числом, если оно является НЕДЕЙСТВИТЕЛЬНЫМ восьмеричным числом. Будут ли в ES6 (или более поздних версиях) числа с нулевым префиксом (возможные восьмеричные или иные) недействительными или рассматриваться как десятичные?