Рубрики
Без рубрики

Приведение в JavaScript

Как преобразовать один тип данных в другой в JavaScript

Даже если JavaScript является слабо типизированным языком, вам может потребоваться преобразовать значение из одного типа в другой.

В JavaScript у нас есть эти примитивные типы:

  • Номер
  • Строка
  • Логический
  • Символ

и тип объекта:

  • Объект

(плюс ноль и неопределенный , но нет смысла бросать от/к ним)

Например, вы можете захотеть преобразовать:

  • число в строке
  • строка к числу
  • строка в логическое значение
  • логическое значение для строки

…и так далее.

Вот методы, которые вы можете использовать для преобразования из одного типа в другой. Я освещаю наиболее распространенные случаи.

Преобразование в строки

В общем случае преобразование из чего-либо в строку обычно заключается в вызове метода toString() для любого значения, и JavaScript создаст строковое значение, соответствующее этому типу. Или вы можете передать любое значение в глобальную функцию String() .

Приведение от числа к строке

Используйте глобальную функцию String или метод числового типа toString() :

String(10) //"10"
(10).toString() //"10"

Приведение от логического к строковому

Используйте глобальную функцию String или метод логического типа toString() :

String(true) //"true"
true.toString() //"true"
String(false) //"false"
false.toString() //"false"

Приведение от даты к строке

Используйте глобальную функцию String или метод типа данных toString() :

String(new Date('2019-01-22'))
//"Tue Jan 22 2019 01:00:00 GMT+0100 (Central European Standard Time)"

(new Date('2019-01-22')).toString()
//"Tue Jan 22 2019 01:00:00 GMT+0100 (Central European Standard Time)"

Особые случаи со строкой

String(null) //"null"
String(undefined) //"undefined"
String(NaN) //"NaN"

Преобразование в числа

Приведение от строки к числу

Мы можем сделать это с помощью глобальной функции Number() , которая является своего рода конструктором. Мы можем передать ему строку, и JavaScript выяснит, как преобразовать ее в число:

Number("1") //1
Number("0") //0

Строки обрезаются перед преобразованием в числа:

Number(" 1 ") //1

передача пустой строки по умолчанию равна 0:

Number("") //0

а для работы с десятичными дробями вы используете точку:

Number("12.2")

Если строка содержит недопустимые символы, она создаст NaN .

Это основы преобразования в числа, но я даю гораздо больше подробностей в как преобразовать строку в число в JavaScript . Существуют и другие способы генерации чисел из строки, включая parseInt() , parseFloat() , Math.floor() , унарный + оператор.

Приведение от логического значения к числу

Как и в случае со строкой, передача логического значения в Number() вернет либо 0, либо 1:

Number(true) //1
Number(false) //0

Кастинг от даты к номеру

Если вы передадите объект даты в Number() , он вернет метку времени даты, которая является наилучшим преобразованием даты в число, которое вы можете получить.

Особые случаи с номером

Number(null) //0
Number(undefined) //NaN
Number(NaN) //NaN

Преобразование в логическое

Любое значение можно преобразовать в логическое, передав его в Boolean() .

Все значения будут разрешены в true , за исключением:

Boolean(false) //false
Boolean(0) //false
Boolean(NaN) //false
Boolean("") //false
Boolean(null) //false
Boolean(undefined) //false

Оригинал: “https://flaviocopes.com/javascript-casting/”