javascript - yyyy - js float




Передача восьмеричного значения в новую функцию числа (2)

Октальное число ничем не отличается от десятичного числа, если оно интерпретируется как число.

013 точно такая же, как 11 . Как только JavaScript увидит, что это число, это просто номер - он не помнит его «восьмеричность» или «десятичную».

Я сделал что-то вроде:

Number.prototype.foo = function () {
    //code
}

// Octal number!
(013).foo();

Но, проверяя это внутри функции foo, я получаю 11 как ценность ... Что случилось?


Чего вы ожидали?

Javascript обрабатывает все целые числа, начинающиеся с нуля как восьмеричные [*], поэтому фактическое значение 013 действительно равно 11 (десятичное). Класс Number только значения и не будет знать, что вы первоначально передали в восьмеричной константе.

[*] Существует исключение для целых чисел, содержащих цифры 8 или 9, - поскольку они не являются законными в восьмеричном, парсер будет неявно рассматривать их как десятичные даже в присутствии начального нуля.







octal