JavaScript. Подробное руководство, 6-е издание (Флэнаган) - страница 48

>

>Object(3) // => new Number(3)


Обратите внимание, что все значения, кроме >null или >undefined, имеют метод >toString(), результатом которого обычно является то же значение, которое возвращается функцией >String(). Кроме того, обратите внимание, что в табл. 3.2 отмечается, что при попытке преобразовать значение >null или >undefined в объект возбуждается ошибка >ТуреЕrror. Функция >Object() в этом случае не возбуждает исключение, вместо этого она просто возвращает новый пустой объект.

Определенные операторы в языке JavaScript неявно выполняют преобразования и иногда могут использоваться для преобразования типов. Если один из операндов оператора >+ является строкой, то другой операнд также преобразуется в строку. Унарный оператор >+ преобразует свой операнд в число. А унарный оператор >! преобразует операнд в логическое значение и инвертирует его. Все это стало причиной появления следующих своеобразных способов преобразования типов, которые можно встретить на практике:


>x + "" // То же, что и String(х)

>+x // То же, что и Number(x). Можно также встретить x-0

>!!x //То же, что и Boolean(x). Обратите внимание на два знака !


Форматирование и парсинг чисел являются наиболее типичными задачами, решаемыми компьютерными программами, и потому в JavaScript имеются специализированные функции и методы, обеспечивающие более полный контроль над преобразованиями чисел в строки и строк в числа.

Метод >toString() класса >Number принимает необязательный аргумент, определяющий основание системы счисления для преобразования. Если этот аргумент не определен, преобразование выполняется в десятичной системе счисления. Но вы можете производить преобразование в любой системе счисления (с основанием от 2 до 36). Например:


>var n = 17;

>binary_string = n.toString(2); // Вернет "10001"

>octal_string = "0" + n.toString(8); // Вернет "021"

>hex_string = "Ox" + n.toString(16); // Вернет "0x11"


При выполнении финансовых или научных расчетов может потребоваться обеспечить преобразование чисел в строки с точностью до определенного числа десятичных знаков или до определенного количества значащих разрядов или получать представление чисел в экспоненциальной форме. Для подобных преобразований чисел в строки класс >Number определяет три метода. Метод >toFixed() преобразует число в строку, позволяя указывать количество десятичных цифр после запятой. Он никогда не возвращает строки с экспоненциальным представлением чисел. Метод >toExponential() преобразует число в строку в экспоненциальном представлении, когда перед запятой находится единственный знак, а после запятой следует указанное количество цифр (т. е. количество значащих цифр в строке получается на одну больше, чем было указано при вызове метода). Метод