Приведение типов в JavaScript. Шпаргалка.

Приведение типов в JavaScript. Шпаргалка.

Всем хорошего настроения. Cегодня мы поговорим о приведении типов во всеми любимом JavaScript. Вообще приведение типов - это операция приведения значения одного типа в значение другого типа. Различают явное приведение типов и неявное приведение типов.

Для JavaScript применимы следующие определения:

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

Неявное приведение выполняется транслятором (компилятором или интерпретатором) по правилам, описанным в стандарте языка.



Содержание статьи:




Зачем нужны приведения типов

Во-первых, эта операция успешно применяется, когда мы используем в своём коде условные операторы. Приведение в этом случае осуществляется автоматически. Для того, чтобы это контролировать нужно иметь представление, какое значение в какое преобразуется, чтобы избежать нежелательного поведения программы в будущем.

javascript
1
2
3
4
5
let a = 5;
if (a) {
console.log('a автоматически привелось к true');
}

Во-вторых, приведение очень помогает, когда, например, нам пришла строка с данными, но по факту в этой строке находится число и оно нам нужно для сложения. В этом случае, без явного приведения будет совсем грустно.

javascript
1
2
3
4
5
6
let data = '25';
// Явное приведение
let res2 = parseInt(data) + 25; // 50
let res1 = data + 25; // "2525"

Таблица явных приведений типов











































































Логическое!!'0' === true
!!0 === false
!!'5' === true
!!'' === false
!!undefined === false
!!null === false
!!NaN === false
Boolean([]) === true
В число+'132' === 132
'132' * 1 === 132
'132' - 0 === 132
Number('132') === 132
Number('132.132') === 132.132
Number('132abc') === NaN
Number('132.132abc') === NaN
parseInt('132abc') === 132
parseInt('132.132abc') === 132.132
parseFloat('132abc') === 132
parseFloat('132.132') === 132.132
parseFloat('132.132abc') === 132.132
В строкуTrue + '' === 'True'
String(132) === '132'
String(null) === 'null'

Таблица неявных преобразований

На примере alert() и if (value) { }




































Логическоеif (undefined) === false
if (null) === false
if (132) === true
if (0) === false
if (NaN) === false
if ('false') === true
if ('') === false
В числоalert( +true ) === 1
alert( +false ) === 0
В строкуalert( true ) === 'true'

null/undefined
















Только при сравнении и
арифметических операциях

undefined => NaN

null => 0
undefined + 0 - Вернет NaN
null + 0 - Вернет 5
null == 0 - Вернет false
undefined == 0 - Вернет false


Вообще, во избежание путаницы и сложно уловимых ошибок желательно, чтобы null/undefined не участвовали в операциях сравнения и арифметических операциях.


Заключение

В этой шпаргалке я постарался отразить на простых примерах преобразование типов.

Если статья показалась Вам полезной, можете поделиться ей в социальных сетях. Если в статью закралась ошибка - пишите в комментариях, я исправлю.