Назад к вопросам
Junior
72
questionbank
Расскажи о преобразовании типов в JavaScript.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В JavaScript преобразование типов происходит явно (принудительно) или неявно (автоматически, коэрцизия).
Явное преобразование:
- Явно вызывается разработчиком.
- Используются встроенные функции или конструкторы:
String(),Number(),Boolean(). Parse integer:parseInt(), parse float:parseFloat(). - Примеры:
// Преобразование в строку
let num = 123;
let str = String(num); // "123"
// Преобразование в число
let strNum = "456";
let number = Number(strNum); // 456
// Преобразование в булево
let emptyStr = "";
let bool = Boolean(emptyStr); // false
Неявное преобразование (Коэрцизия):
- Происходит автоматически движком JavaScript во время выполнения операций.
- Случается в операторах (арифметических, сравнения), в условных выражениях, при вызове определенных функций.
- Примеры:
// Строковое сложение
let result = "10" + 5; // "105" (число 5 преобразуется в строку "5")
// Арифметическая операция
let result2 = "10" - 5; // 5 (строка "10" преобразуется в число 10)
// Сравнение
let result3 = "10" == 10; // true (строка "10" преобразуется в число 10)
// В условном выражении
if ("hello") {
// Строка "hello" преобразуется в true
}
Правила неявного преобразования:
- К строке: При сложении строки с любым другим типом, все преобразуется в строку.
- К числу: В арифметических операциях (кроме сложения со строкой), операциях сравнения (
>,<,>=,<=), унарном плюсе+, при вызове математических функций. - К булеву: В логических операторах (
||,&&,!), в условных выражениях (if,while). "Ложные" значения:false,0,"",null,undefined,NaN. Все остальное - "истинные". - К примитиву: Объекты при необходимости преобразуются в примитивы. Порядок преобразования зависит от контекста (
ToPrimitiveалгоритм).
// Унарный плюс
let strNum = "123";
let num = +strNum; // 123
// Сравнение объектов
[] == false; // true (оба преобразуются к 0)
Понимание преобразования типов критично для избежания неожиданного поведения кода. Неявное преобразование может быть источником ошибок, поэтому явное преобразование часто предпочтительнее, делая код более предсказуемым.