Динамическая типизация — это возможность одного типа данных превращаться в другой.
Число может стать строкой, строка — числом. А объект — булевым значением.
Далее виды динамической типизации только те которые используются сейчас.
Преобразование в строку — to String
Динамическая типизация — преобразование в строку.
В JS если что то сложить со строкой, то это выражение превратится в строку.
Конкатенация — это сложение/объединение строк. Или сложение строки с чем-то: с каким-либо другим типом данных.
console.log('ww' + 'gg');

То есть две части строки спаялись в одну строку.
Прибавим к строке число.
console.log('ww' + 4);

К строке припаялась 4. И это уже не число, а строка. Для того что бы убедиться воспользуемся typeof
.
console.log(typeof('ww' + 4));

Складывая с булевым значением все равно возвращается строка.
console.log(typeof('ww' + false));

Чаще всего что бы получить строку используют пустое значение в ''
console.log(typeof('' + false));
Как конкатенацию применить на практике?
Самый простой и частый пример это формирование URL, так как это тоже строка. Допустим у вас есть какой то url
и вам нужно перейти в catalog3
.
console.log('https://name.com/catalog' + 3);

Преобразование в число — to Number
Динамической типизация — Преобразование в число.
Унарный плюс более удобный способ конвертации различных типов данных в число, которым пользуются в настоящее время.
Унарный плюс конвертирует объект и строку в числовой тип данных.
Поставив перед любым типом данных +
получим число number
. Возьмем строку '5'
и преобразуем ее в число.
console.log(typeof(+'5'));


Методы parseInt()
Динамическая типизация с помощью данных методов встречается не часто, но используются для конвертации строк в числа.
console.log(parseInt('100px'));
console.log(typeof(parseInt('100px')));

Где можно применить на практике типизация строки в число?
Все что получаете от пользователя — всегда будет типом данных строка string
. Но предполагаем, что пользователь введет число и хотим получить тип данных именно число number
.
let answ = +prompt(('Привет, сколько тебе лет?'));
console.log(answ);
console.log(typeof(answ));


Преобразование в булевы значения
Еще один вид динамической типизации — преобразование типов данных в булевы значения.
Например, null
— Что это?
Истина или ложь: true
или false
?
Логично предположить, что пустота или «не ничего» — это ложь. И это действительно так в языке JavaScript null
— это false
.
JavaScript всегда будет конвертироваться в ложь — false
:
- 0 (ноль),
''
,null
,undefined
NaN
.
Строка, содержащая пробел
' '
— это уже не пустая строка(!)
Все остальное, что существует в JavaScript, в логическом контексте является истиной
true
.

В итоге получаем ничего или
false
. Продолжим код и переменнойа
присвоим1

Получаем
true
.