Далее на странице...
- Что такое динамическая типизация?
- Преобразование в строку - String
- Преобразование в строку - Конкатенация
- Преобразование в число - Number
- Преобразование в число - Унарный плюс
- Методы parseInt() и parseFloat()
- Преобразование в булевы значения
- Команда Boolean
- Два отрицания !!
- Типы данных в JavaScript - Иллюстрация
Динамическая типизация - это одна из особенностей JavaScript как языка программирования.
О том, что такое динамическая типизация уже шла речь здесь. А также в статье о преобразовании и приведении типов.
И прежде, чем продолжить разговор о динамической типизации не лишним будет вспомнить, какие типы данных встречаются в JavaScript.
Что такое динамическая типизация?
Если говорить простым языком, то динамическая типизация - это возможность одного типа данных превращаться в другой.
Например, число может стать строкой, строка - числом. А объект - булевым значением.
Но в мире программирования, в других языках есть и статичиская типизация, когда к примеру число всегда остается числом.
Далее рассмотрим виды динамической типизации.
Преобразование в строку - String
Первый вид динамической типизации - Преобразование в строку.
Как и что можно превратить в строку в JavaScript?
Команда String позволяет любой тип данных конвертировать в строку.
Пример 1.1
console.log(typeof(String(null)));
console.log(typeof(String(11)));
Результат
string
string
При помощи команды String конвертируем null и число в строку, и используем оператор typeof, чтобы убедиться в этом.
Такой способ конвертации различных типов данных в строку используется редко.
Преобразование в строку - Конкатенация
Конкатенация - это сложение/объединение строк. Или сложение строки с чем-то: с каким-либо другим типом данных.
При этом происходит преобразование в строку этого типа данных.
Пример 1.2
console.log(typeof(11 + ''));
console.log(typeof(undefined + ''));
Результат
string
string
В результате при сложении числа со строкой мы получаем строку. Тот же результат мы увидим при сложении строки с другими типами данных, напримиер, undefined.
На практике часто используется этот способ преобразования различных типов данных в строку, особенно чисел.
Преобразование в число - Number
Второй вид динамической типизации - Преобразование в число.
Команда Number позволяет любой тип данных конвертировать в число.
Пример 2.1
const obj = {};
console.log(typeof(obj));
console.log(typeof(Number(obj)));
console.log(typeof(Number('expert')));
Результат
object
number
number
При помощи команды Number конвертируем объект и строку в число, и используем оператор typeof, чтобы убедиться в этом.
Такой способ конвертации различных типов данных в число используется очень редко.
Преобразование в число - Унарный плюс
Унарный плюс более лаконичный и удобный способ конвертации различных типов данных в число.
Здесь приведен пример того, как унарный плюс может использоваться на практике.
Но вернемся к примеру 2.1.
Пример 2.2
const obj = {};
console.log(typeof(obj));
console.log(typeof(+obj));
console.log(typeof(+'expert'));
Результат
object
number
number
Унарный плюс конвертирует объект и строку в числовой тип данных.
Методы parseInt() и parseFloat()
Стоит упомянуть о числовых методах parseInt() и parseFloat(), которые, не часто, но используются для конвертации строк в числа.
Пример 2.3
console.log(typeof('15px'));
console.log(typeof(parseInt('15px')));
console.log(parseInt('15px'));
Результат
string
number
15
В результате строка 15px конвертируется в число 15.
Преобразование в булевы значения
Третий вид динамической типизации - преобразование типов данных в булевы значения.
При подобных преобразованиях полезно обращаться к логике.
Например, null - пустота, то чего не существует. Что это? Истина или ложь: true или false?
Логично предположить, что пустота или "не ничего" - это ложь. И это действительно так в языке JavaScript null - это false.
В языке JavaScript есть условное разделение на логические типы.
Итак, что в JavaScript всегда будет конвертироваться в ложь?
Всегда конвертируются в false: 0 (ноль), '' (пустая строка), null, undefined и NaN.
Строка, содержащая пробел - это уже не пустая строка.
Все остальное, что существует в JavaScript, в логическом контексте является истиной true.
Пример 3.1
let switcher = null;
if(switcher){ // --> false
console.log('Hello');
}
Результат
Здесь мы не получим результата, так как в условие помещается null, что в логическом контексте является ложью false.
Пример 3.2
let switcher = 1;
if(switcher){ // --> true
console.log('Hello');
}
Результат
Hello
Здесь код работает - выдает результат, так как в условие помещается число, что в логическом контексте является истиной true.
Команда Boolean
Команда (оператор или функция) Boolean - это 2-ой и явный способ преобразования типов данных в булевы значения.
Пример 3.3
console.log(Boolean(null));
console.log(Boolean('hi'));
Результат
false
true
Здесь null и строка были конвертированы в false и true соответственно.
Такой способ конвертации различных типов данных в булевы значения используется редко.
Два отрицания !!
Два отрицания !! - это 3-ий (и еще более редкий чем предыдущий) способ конвертации различных типов данных в булевы значения.
Пример 3.4
console.log(!!null);
console.log(!!'hi');
Результат
false
true
Результат тот же, что и в предыдущем примере.
Типы данных в JavaScript - Иллюстрация
На этой иллюстрации продемонстрирована классификация типов данных в JavaScript.