Преобразование типов Javascript

Преобразование типов Javascript

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали про типы данных в Javascript. В данной статье я бы хотел поговорить про преобразование типов в Javascript. Преобразование типов в Javascript, да и вообще в любом языке программирования, выполняются очень часто. Сначала хотел поговорить про преобразование типов при сравнении переменных, либо других условий, результатом которых является true или false. При сравнении переменных разного типа выполняются фоновые преобразования. Здесь главным моментом является то, что при таких фоновых преобразованиях, значение, которое хранится в переменной, не меняется. переменная преобразовывается в тот тип данных (создаётся временное значение переменной), который необходим для выполнения операции. приведу пример:

Сравниваются переменные строкового типа и числового типа. при сравнении значения этих переменных приводятся к одному типу данных. Далее сравнение возвращает логическое значение, а преобразованные временные значения удаляются. Все преобразования зависят от контекста — операторов, которые выполняют над ними действия. пример кода:

var a = 5;
var b = "15";
if (a < b) alert("a < b"); else alert("a > b");

В данном случае переменная b будет преобразована в число (выполнилось фоновое преобразование типа String в тип Number, и получится временное значение переменной b типа Number = 15, которое удалится после выполнения операции сравнения), и выйдет результат, что a < b.

Ниже приведена таблица, которая показывает, как один тип данных преобразовывается в другой:

Тип значения Контекст, в котором используется значение
Строковый Числовой Логический Объектный
Неопределенное значение ‘undefined’ NaN false Error
null ‘null’ 0 false Error
Пустая строка Пустая строка 0 false Объект String
Непустая строка Непустая строка Числовое значение строки или NaN true Объект String
0 ’0′ 0 false Объект Number
NaN ‘NaN’ NaN false Объект Number
Infinity ‘Infinity’ Infinity true Объект Number
-Infinity ‘-Infinity’ -Infinity true Объект Number
Любое другое число Строковое представление числа Само число true Объект Number
true ‘true’ 1 true Объект Boolean
false ‘false’ 0 false Объект Boolean
Объект, функция toString() valueOf(), toString() или NaN true Объект, функция

Преобразования типов данных

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

var a = 20;
var b = !a; //вернет false
var c = !!a; //вернет true

Строку можно получить из любого объекта. Пример:

var a = 20;
var b = a.toString(); //вернет "20"
var c = a + ""; //вернет "20"
typeof b; //вернет string
typeof c; //вернет string

Получение числа из строки. Пример:

var a = "20";
var b = a * 1; //вернет 20
var c = + a; //вернет 20
typeof b; //вернет number
typeof c; //вернет number

Давайте теперь на основе полученных знаний разберем поведение логического "И" (&&) и логического "ИЛИ" (||):

Логическое "И" (&&):

Для корректного выполнения этого оператора необходимо, чтобы значения всех операндов могли быть преобразованы в true. Если значения всех операндов могут быть преобразованы в true, то будет возвращено первоначальное значение последнего сравниваемого операнда. Если значение хотя бы одного операнда будет преобразовано в false, то вернется первоначальное значение этого операнда. Пример:

var a = 15;
var b = 'abc';
var c = 0;
var resultat;
resultat = a && b && c; //вернет 0
resultat = c && b && a; //вернет 0
resultat = 7 && a; //вернет 15
resultat = 7 && b; //вернет 'abc'

Логическое "ИЛИ" (||):

Немного поясню про операторы и операнды. Разберем выражение resultat = a && b && c. Здесь операторами являются "=" и "&&", т.е. это действия. Операнды: resultat, a, b ,c. Это то, над чем совершаются действия.

Чтобы этот оператор выполнился корректно необходимо наличие хотя бы одного значения операнда, преобразованного в true. Как только такой операнд будет найден, будет возвращено его первоначальное значение. Если такого операнда найдено не будет, вернется значение последнего операнда. Пример:

var a = 15;
var b = 'abc';
var c = 0;
var resultat;
resultat = a || b || c; //вернет 15
resultat = c || b || a; //вернет 'abc'
resultat = '' || c; //вернет 0

В данной статье вы узнали про преобразование типов в Javascript.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *