मुख्य कंटेंट तक स्किप करें

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

@serverSerrverlesskiy

Приведение типов (type coercion)#

Это автоматическое или неявное преобразование значений из одного типа данных в другой (например, строки в число). Преобразование типа похоже на приведение типа, потому что они оба преобразуют значения из одного типа данных в другой с одним ключевым🗝️ различием — приведение типа является неявным, тогда как преобразование типа может быть неявным или явным.

transformation

Примеры 👇 :

लाइव एडिटर
परिणाम
SyntaxError: Unexpected token (1:8)
1 : return ()
            ^

В приведённом выше примере JavaScript приводит число 9 в строку, а затем объединяет два 2️⃣ значения вместе, в результате получается строка 59. JavaScript имел выбор между строкой или числом и решил использовать строку.

Компилятор мог привести строку 5 к числу и вернуть сумму 14, но он этого не сделал. Чтобы получить этот результат, вам нужно явно преобразовать строку 5 в число, используя метод Number()👇 :

लाइव एडिटर
परिणाम
SyntaxError: Unexpected token (1:8)
1 : return ()
            ^

Преобразование типов (type conversion)#

Transformation

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

Строковое преобразование#

Transformation

Строковое преобразование происходит, когда требуется представление чего-либо в виде строки. Например, мы можем использовать функцию String(value), чтобы преобразовать значение к строке 👇 :

लाइव एडिटर
परिणाम
SyntaxError: Unexpected token (1:8)
1 : return ()
            ^

Преобразование происходит очевидным образом. true ✅ становится "true"

Численное преобразование#

Transformation

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

लाइव एडिटर
परिणाम
SyntaxError: Unexpected token (1:8)
1 : return ()
            ^

Мы можем использовать функцию Number(value), чтобы явно преобразовать value к числу 👇 :

लाइव एडिटर
परिणाम
SyntaxError: Unexpected token (1:8)
1 : return ()
            ^

Явное преобразование часто применяется, когда мы ожидаем получить число из строкового контекста, например из текстовых 📜 полей форм.

Если строка не может быть явно приведена к числу, то результатом преобразования будет NaN (англ. Not-a-Number, "не число"). Например 👇:

लाइव एडिटर
परिणाम
SyntaxError: Unexpected token (1:8)
1 : return ()
            ^

Правила численного преобразования:#

ЗначениеПреобразуется в…
undefinedNaN
null 0
true / false1 / 0
stringПробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем 0, иначе из непустой строки «считывается» число. При ошибке🙅‍♂️ результат NaN.

Примеры:

Number('   123   ') // 123Number('123z') // NaN (ошибка чтения числа на месте символа "z")Number(true) // 1Number(false) // 0Number(null) // 0Number(undefined) // NaN

Учтите, что null и undefined ведут себя по-разному. Так, null становится нулём, тогда как undefined приводится к NaN.

Логическое преобразование#

Transformation

Логическое преобразование самое простое. Происходит в логических операциях, но также может быть выполнено явно с помощью функции⚙️ Boolean(value).

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

Значения, которые интуитивно "пустые", вроде 0, пустой строки, null, undefinedи NaN, становятся false. Все остальные значения становятся true.

Boolean(1) // trueBoolean(0) // falseBoolean('Привет!') // trueBoolean('') // false
Заметим, что строчка с нулём "0" — это true

Некоторые языки👅 (к примеру, PHP) воспринимают строку "0" как false. Но в JavaScript, если строка не пустая, то она всегда true

Boolean('0') // trueBoolean(' ') // пробел это тоже true (любая непустая строка это true)

Проблемы?#

Problem

Пишите в Discord или телеграмм чат, а также подписывайтесь на наши новости

Вопросы:#

Question

Какую функцию нужно использовать для строкового преобразования?

  1. String(value)
  2. Boolean(value)
  3. Number(value)

Что такое приведение типов?

  1. Передача данных из одного типа в другой
  2. Преобразование значений из одного типа данных в другой
  3. Представление чего-либо в виде строки

Какое ключевое различие между приведением типов и преобразованием типов?

  1. Приведение типа явное, а преобразование типа неявное
  2. Приведение типа неявное, а преобразование типа явное
  3. Приведение типа неявное, а преобразование типа может быть и явным и неявным

В каком случае результатом преобразования будет NaN?

  1. Когда строка не может быть явно приведена к числу
  2. Когда число не может быть явно приведено к строке
  3. Когда в коде есть ошибка

Чем становятся «пустые» значения при преобразовании?

  1. null
  2. true
  3. false

Для того чтобы понять, на сколько вы усвоили этот урок, пройдите тест в мобильном приложении нашей школы по этой теме.

Sumerian school

Ссылки:#

  1. MDN web docs - Приведение типов
  2. для подростков: прекрасное руководство по программированию для начинающих, том 1: Javascript - Jeremy Moritz
  3. JavaScript.ru
  4. Арифметические действия с целыми числами

Contributors ✨#

Thanks goes to these wonderful people (emoji key):


Dmitriy Vasilev

📖💵

Resoner2005

🐛 🎨 🖋

Become a Patron!