Главная или честный способ заработка в сети Зачем мне это? Всё начинается с идеи

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



Неявное преобразование типов данных - автоматическое преобразование данных из одного типа в другой. В JavaScript данное преобразование случается, когда необходимо провести операцию над операндами разных типов. Приведём классический пример:

var a, b, c; /*Объявляем переменные a, b, c*/
a=1; /*Задаём значение переменной a*/
b="2"; /*Задаём значение переменной b*/
c=a+b; /*Складываем переменные a и b. Результат этой операции записываем в переменную c*/
alert (c); /*Выводим значение переменной c на экран*/

Посмотрим, что получилось. А получилось 12. Как это так? Переменной a задано числовое значение, переменной b - строковое. Когда над двумя этими операндами производится операция сложения, JavaScript самостоятельно преобразует переменную a к строковому типу, а дальше уже идёт сложение строк, и вместо 3 получается 12. Ниже рассмотрим несколько таблиц, в которых напишем, к какому типу будут преобразованы данные при проведении над ними различных операций.

Преобразование строк

String (строковое значение) Number (числовое преобразование) Boolean (логическое преобразование) Object (преобразование в объекты)
"" (пустая строка) 0 false new String("")
"12" (числовое значение в строке) 12 true new String("12")
"Привет" (строковое значение, записанное в строку) NaN true new String("Привет")

Преобразование чисел

Number (числовое значение) String (строковое преобразование) Boolean (логическое преобразование) Object (преобразование в объекты)
0 "0" false new Number(0)
-0 "0" false new Number(-0)
2 "2" true new Number(2)
NaN "NaN" false new Number(NaN)
Infinity "Infinity" true new Number(Infinity)
-Infinity "-Infinity" true new Number(-Infinity)

Преобразование логических значений

Boolean (логическое значение) String (строковое преобразование) Number (числовое преобразование) Object (преобразование в объекты)
true "true" 1 new Boolean(1)
false "false" 0 new Boolean(0)

Преобразование специальных значений

Специальное значение Boolean String Number Object
null false "null" 0 ошибка TypeError
undefined false "undefined" NaN ошибка typeError

Неявное преобразование JavaScript осуществляет в зависимости от операции, проводимой над данными. Если при сложении строки и числа, число преобразуется в строку автоматически, то при вычитании из числа строки результат получается совсем другой. Смотрим пример:

var a, b, c; /*Объявляем переменные a, b, c*/
a=1; /*Задаём значение переменной a*/
b="2"; /*Задаём значение переменной b*/
c=a-b; /*Вычитаем из переменной a и переменную b. Результат этой операции записываем в переменную c*/
alert (c); /*Выводим значение переменной c на экран*/

Запускаем. На экране число -1. В случае проведения операции вычитания, строка "2" преобразовалась в число. Из числа 1 вычли число 2. Получилось -1.

13.04.2018


<<Предыдущая | В раздел | Следующая>>