В большинстве случаев операторы и функции автоматически преобразуют переданные им значения в правильный тип.
Например, alert
автоматически преобразует любое значение в строку, чтобы отобразить его. Математические операции преобразуют значения в числа.
Также бывают случаи, когда нам необходимо явно преобразовать значение в ожидаемый тип.
Про предметы пока не говорю
В этой главе мы не будем рассматривать объекты. Сейчас мы будем говорить только о примитивах.
Позже, после того, как мы узнаем об объектах, в главе «Преобразование объектов в примитивы» мы увидим, как объекты подходят.
Преобразование строк происходит, когда нам нужна строковая форма значения.
Например, alert(value)
делает это, чтобы показать значение.
Мы также можем вызвать функцию String(value)
для преобразования значения в строку:
пусть значение = правда; предупреждение (значение типа); // логическое значение значение = Строка (значение); // теперь значение представляет собой строку «истина» предупреждение (значение типа); // нить
Преобразование строк в основном очевидно. false
становится "false"
, null
становится "null"
и т. д.
Преобразование чисел в математические функции и выражения происходит автоматически.
Например, когда деление /
применяется к числам, не являющимся числами:
Предупреждение( "6"/"2"); // 3, строки преобразуются в числа
Мы можем использовать функцию Number(value)
для явного преобразования value
в число:
пусть строка = "123"; предупреждение (тип ул); // нить пусть num = Число (строка); // становится числом 123 оповещение (тип числа); // число
Явное преобразование обычно требуется, когда мы читаем значение из строкового источника, такого как текстовая форма, но ожидаем ввода числа.
Если строка не является допустимым числом, результатом такого преобразования будет NaN
. Например:
let age = Number("произвольная строка вместо числа"); оповещение (возраст); // NaN, преобразование не удалось
Правила преобразования чисел:
Ценить | Становится… |
---|---|
undefined | NaN |
null | 0 |
true and false | 1 и 0 |
string | Пробелы (включая пробелы, табуляции t , новые строки n и т. д.) в начале и конце удаляются. Если оставшаяся строка пуста, результатом будет 0 . В противном случае число «считывается» из строки. Ошибка дает NaN . |
Примеры:
Предупреждение(Номер("123")); // 123 Предупреждение(Номер("123z")); // NaN (ошибка чтения числа в "z") Предупреждение(Номер(истина)); // 1 Предупреждение(Номер(ложь)); // 0
Обратите внимание, что значения null
и undefined
здесь ведут себя по-разному: null
становится нулем, а undefined
становится NaN
.
Большинство математических операторов также выполняют такое преобразование, мы увидим это в следующей главе.
Булево преобразование является самым простым.
Это происходит в логических операциях (позже мы познакомимся с проверкой условий и другими подобными вещами), но также может быть выполнено явно с помощью вызова Boolean(value)
.
Правило конвертации:
Значения, которые интуитивно являются «пустыми», например 0
, пустая строка, null
, undefined
и NaN
, становятся false
.
Другие ценности становятся true
.
Например:
предупреждение(логическое значение(1)); // истинный предупреждение(логическое значение(0)); // ЛОЖЬ alert(Boolean("привет")); // истинный Предупреждение(Boolean("")); // ЛОЖЬ
Обратите внимание: строка с нулевым "0"
true
Некоторые языки (а именно PHP) рассматривают "0"
как false
. Но в JavaScript непустая строка всегда имеет true
.
Предупреждение(Boolean("0")); // истинный Предупреждение(Boolean(" ")); // пробелы, также верно (любая непустая строка является истиной)
Три наиболее широко используемых преобразования типов — это строковое, числовое и логическое.
String Conversion
— происходит, когда мы что-то выводим. Может быть выполнено с помощью String(value)
. Преобразование в строку обычно очевидно для примитивных значений.
Numeric Conversion
– происходит при математических операциях. Может быть выполнено с помощью Number(value)
.
Преобразование происходит по правилам:
Ценить | Становится… |
---|---|
undefined | NaN |
null | 0 |
true / false | 1 / 0 |
string | Строка читается «как есть», пробелы (включая пробелы, табуляции t , новые строки n и т. д.) с обеих сторон игнорируются. Пустая строка становится 0 . Ошибка дает NaN . |
Boolean Conversion
– происходит в логических операциях. Может быть выполнено с помощью Boolean(value)
.
Соблюдает правила:
Ценить | Становится… |
---|---|
0 , null , undefined , NaN , "" | false |
любое другое значение | true |
Большинство из этих правил легко понять и запомнить. Заметными исключениями, в которых люди обычно допускают ошибки, являются:
undefined
— это NaN
как число, а не 0
.
"0"
и строки, состоящие только из пробелов, такие как " "
являются истинными как логические значения.
Объекты здесь не рассматриваются. Мы вернемся к ним позже в главе «Преобразование объектов в примитивы», посвященной исключительно объектам, после того, как узнаем более базовые вещи о JavaScript.