Как вы, наверное, знаете, JavaScript — это язык программирования с динамической типизацией, что означает, что переменные могут изменять свои типы во время выполнения, и это может быть источником ошибок, если вы не понимаете, почему это происходит.

Операторы и функции автоматически преобразуют переданные им значения в нужный тип. Например, когда мы используем alert(), все значения будут преобразованы в строку.

Разберем каждый из наиболее возможных из них, которые вы можете встретить в коде:

Преобразование логического типа

Логическое преобразование является самым простым.

  • 0, NaN, undefined, null, "" превращаются в false
  • все остальное, включая предметы, true
alert( Boolean("hello world") ); // true
alert( Boolean(0) ); // false  
alert( Boolean(1) ); // true 
alert( Boolean("") ); // false

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

Числовое преобразование происходит в математических функциях и выражениях автоматически.

  • undefined становится NaN.
  • null становится0.
  • true становится1 и false становится0.
  • string,строка читается «как есть», пробелы с обеих сторон игнорируются. Пустая строка становится 0. Ошибка выдает NaN.
1 * "123z" // NaN
8 / "2" // 4
3 - "2" // 1

8 + "4" // "84", + operator converts all to string and concatenate them if one operand is string.

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

Преобразование строк происходит, когда нам нужна строковая форма значения.

alert(3)    // 3 becomes "3"
alert(true) // true becomes "true"
alert(null) // null becomes "null"

Как видите, преобразование строк происходит, как и следовало ожидать, очевидным образом.

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

JS автоматически выполняет преобразование объекта в строку, когда мы пытаемся распечатать такой объект, как console.log(obj). Точно так же преобразования объекта в число выполняются автоматически, когда мы пытаемся добавить или вычесть объекты или применить математические функции.

let date1 = new Date(2021, 5, 1);
console.log(date1);
// Equivalent to toDateString() : 2021-06-01T05:00:00.000Z
let date2 = new Date(2030, 5, 1); 
let time = date2 - date1; 
console.log(time)
// Equivalent to valueOf: 283996800000

Я надеюсь, что этот пост может быть полезен, и не забывайте комментировать, если у вас есть вопросы, или связаться со мной в Твиттере. Пока :)

В сериале.

Цикл событий

Типы данных и структур.

Преобразование типов

Истинные и ложные ценности

П.Д.: Если вы нашли этот пост полезным, подумайте о том, чтобы поддержать меня, купив одну из этих книг или одну из JS Starter для вашего нового проекта. Спасибо заранее :)