Я подумал, что было бы здорово поделиться с вами тем, как Javascript преобразует свои примитивные типы данных.
Это высокоуровневый обзор преобразования типов в Javascript. После прочтения этого блога вы будете лучше понимать, как javascript преобразует свои типы данных.
Преобразование типов
- Преобразование одного типа данных в другой (число в строку или строка в число).
В Javascript существует два типа преобразования типов данных: неявное преобразование и явное преобразование. Давайте рассмотрим оба типа преобразования.
Неявное преобразование
- Javascript автоматически преобразует типы данных без нашего указания.
- Выполнение арифметических операций над двумя различными типами данных заставляет Javascript преобразовывать типы данных, чтобы вернуть правильное значение.
- При использовании оператора
+
со строкой и другим типом данных, Javascript преобразует оба типа данных в строки и вернет значение строки.
console.log(5 + "5"); => "55"
console.log(true + "false"); => "truefalse"
- При использовании операторов
| - | * | / | % |
Javascript попытается преобразовать оба типа данных в числа.
console.log(1 * "2"); => 2
console.log(5 * "5"); => 25
- Если тип данных не может быть преобразован в число, Javascript вернет
NaN (Not A Number)
в качестве возвращаемого значения.
console.log(1 * "true"); => NaN
console.log(0 / false); => NaN
console.log(true % "false"); => NaN
console.log(1 * undefined); => NaN
- Когда булево значение true преобразуется в число, оно имеет значение 1
console.log(0 + true); => 1
- Когда булево значение false преобразуется в число, оно имеет значение 0
console.log(1 * false); => 0
console.log("14", true + false); => 1
console.log(1 * null); => 0
- Любое число, деленное на 0, равно бесконечности
console.log(12 / false); => Infinity
console.log(true / false); => Infinity
- Использование операторов равенства заставит Javascript преобразовывать типы данных
- Оператор
==
equals to сравнивает оба значения и преобразует оба типа данных в числа - Оператор
===
strictly equals to сравнивает оба значения, но не преобразует типы данных
console.log(7 == "7"); => true
console.log(7 == "8"); => false
console.log(7 === 7); => true
console.log(7 === "7"); => false
console.log(7 === "8"); => false
console.log("true" == true); => false
console.log("true" === true); => false
console.log(true == 1); => true
console.log(true === 1); => false
console.log(null == undefined); => true
console.log(null === undefined); =>false
Явное преобразование
- Преобразование типов данных вручную
- Метод
Number()
преобразует строковые и булевы значения в числа. Если строка содержит какой-либо текст, javascript вернетNaN
.
console.log(Number("")); => 0
console.log(Number("Halo 3")); => NaN
console.log(Number("5")); => 5
console.log(Number(true)); => 1
console.log(Number(false)); => 0
- Метод
parseInt()
преобразует строковые значения в целые числа.parseInt()
— это строковый метод. Он возвращает ошибку при использовании с другими типами данных. Если строка содержит текст и числа, мы можем извлечь числа из строки только в том случае, если число находится в начале строки. Если число не находится в начале строки, мы получим возвращаемое значениеNaN
NotaNumber
console.log(parseInt("12")); => 12
console.log(parseInt("12.5")); => 12
console.log(parseInt(true)); => NaN
console.log(parseInt("true")); => NaN
console.log(parseInt("true12")); => NaN
console.log(parseInt("12true12")); => 12
console.log(parseInt(null)); => NaN
- Метод
parseFloat()
похож на методparseInt()
за исключением того, что он используется для преобразования строк, содержащих десятичные числа, в плавающие.
console.log(parseFloat("12.5")); => 12.5
console.log(parseFloat("2.5Hello")); => 2.5
console.log(parseFloat("2.5 Hello")); => 2.5
console.log(parseFloat("Hello2.5")); => NaN
console.log(parseFloat("Hello 2.5")); => NaN
- Метод
String()
и метод.toString()
преобразуют примитивные типы данных в строки
console.log(String(12)); => "12"
console.log(String(true)); => "true"
console.log(String(3.41)); => "3.14"
console.log((88).toString()); => "88"
console.log(true.toString()); => "true"
console.log((22.1).toString()); => "22.1"
console.log((12345678).toString()); => "12345678"
- Метод
Boolean()
преобразует примитивные типы данных в булевы значения - Положительные & Отрицательные числа имеют истинное значение
- 0 и пустые строки имеют ложное значение
- Строки с текстом или числами имеют истинное значение
- null & undefined имеет ложное значение
console.log(Boolean(3)); => true
console.log(Boolean(0)); => false
console.log(Boolean(-1)); => true
console.log(Boolean(-10)); => true
console.log(Boolean("")); => false
console.log(Boolean("ghjk")); => true
console.log(Boolean("56789")); => true
console.log(Boolean(null)); => false
console.log(Boolean(undefined)); => false