«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript


Игра на «Морской Бой» на 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.



Читайте также...



Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Рунет - Часть 3
Помощь сайту
Yandex-деньги/Ю-Money
410011236419322
Перевод на карту СБ
4276 1300 1671 5819
WebMoney
R711879515665 Z861169301432

Тематические публикации
Популярные заметки
Последние заметки