Преобразование типов для примитивов в javascript

Рубрика: Javascript
8 мая 2018

Здравствуйте уважаемые читатели! Сегодня рассмотрим преобразование примитивных типов данных (все типы кроме объектов) в языке 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:

  1. Строковое — String(val);
  2. Численное — Number(val);
  3. Логическое — Boolean(value).

Особый случай сравнение специальных значений undefined и null. Они равны друг другу, но не равны чему либо еще.

На этом все. До новых встреч на страницах блога!

(4 оценок, среднее: 4,75 из 5)
Loading...

Получай статьи почтой:


Оставить комментарий




Subscribe without commenting