Преобразование типов для примитивов в javascript
Здравствуйте уважаемые читатели! Сегодня рассмотрим преобразование примитивных типов данных (все типы кроме объектов) в языке javascript. Система преобразования типов в js простая, но незначительно отличается от других языков программирования.
Всего в javascript есть три преобразования:
- Строковое;
- Численное
- Логическое.
Далее рассмотрим их подробнее.
Строковое преобразование
Явным образом осуществить преобразование переменной в строку можно вызовом String(val)
. Например:
var a = 123;
var b = a + 1; //b = 124
var c = String (a) + 1; // c = «1231»
При выполнении выражения String(false)
, String(null)
или String(undefined)
: false
становится "false"
, null
— "null"
и undefined
— "undefined"
.
Также преобразование к строке происходит при использовании оператора +
. Когда один из аргументов оператора +
является строкой, другой его аргумент также преобразуется в строку. Например:
var a = «1» + 1; //a = «11»
var b = true + «false»; //b = «truefalse»
Численное преобразование
Для явного преобразования переменной к числу используется выражение Number(val)
, либо можно просто поставить перед выражением унарный "+"
. Например:
var a = Number («100»); // 100
var b = +"100";// 100
Преобразование различных значений к числу подчиняется следующим правилам:
undefined
— преобразуется вNaN
(что такоеNaN
можно почитать здесь);null
— преобразуется в0
;true
— преобразуется в1
;false
— преобразуется в0
;- строка — пробельные символы по краям обрезаются. Далее, если пустая строка, то
'0'
. Если не пустая, то считывается число, если ошибка, тоNaN
.
Примеры:
var a = +" \n 999 \n\n"; // 999
var a = +"qwe 345 df";// будет ошибка и результат NaN
Как было описано выше, специальные значения undefined
и null
преобразуются в NaN
и 0
соответственно. Но при выполнении логической операции ==
ведут себя особенно. При сравнении ==
undefined
и null
равны друг другу, но не равны никакому другому значению. Примеры:
alert (undefined == null);// true
alert (undefined == 0);// false
alert (undefined > 0);// false
alert (undefined < 0);// false
alert (null == 0);// false
alert (null == 0);// false
но
alert (null >= 0);// true
Логическое преобразование
Преобразование значений к true/false
при применении логических операторов, или в логических конструкциях, например в конструкции if(value)
. Либо явным образом с помощью оператора Boolean(value)
или двойного логического отрицания !!value
.
Все значения, которые пусты становятся false
. Вот они: 0
, null
, undefined
, NaN
, пустая строка. Причем под пустой строкой понимается именно пустая строка. Строка состоящая хотя бы из одного пробела не считается пустой и преобразуется к true
.
Остальные значения преобразуются к true
.
В итоге имеем три преобразования типов в JavaScript:
- Строковое —
String(val)
; - Численное —
Number(val)
; - Логическое —
Boolean(value)
.
Особый случай сравнение специальных значений undefined
и null
. Они равны друг другу, но не равны чему либо еще.
На этом все. До новых встреч на страницах блога!
Оставить комментарий