Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Явне і неявне перетворення типів». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Явне перетворення** - це коли ти сам явно вказуєш, що потрібно змінити тип значення (наприклад, через `Number()`, `String()`). **Неявне перетворення** - це коли JavaScript сам автоматично змінює тип даних під час обчислення виразу. **Ключове:** Явне перетворення повністю контролює розробник, неявне - керує JS-двигун автоматично, що підвищує ризик несподіваних помилок (особливо з `==` і `+`).Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення### **Явне (explicit) перетворення** Це коли **ти сам явно вказуєш**, що потрібно змінити тип значення. Тобто ти **навмисно** виконуєш перетворення. > Ти даєш інтерпретатору *пряму вказівку*: > «Зроби це рядком / числом / булевим». --- ### **Неявне (implicit) перетворення** Це коли **JavaScript сам автоматично** змінює тип даних під час обчислення виразу, **щоб операція спрацювала**. > Інтерпретатор робить це «за тебе», часто несподівано. --- ## Приклади перетворення типів ### 1. Явне перетворення (explicit) Ти керуєш процесом сам: ```javascript String(123); // "123" Number("42"); // 42 Boolean(0); // false Boolean("hi"); // true ``` Або за допомогою коротких прийомів: ```javascript 123 + ""; // "123" (явне приведення до рядка) +"42"; // 42 (приведення до числа) !!"text"; // true (приведення до boolean) ``` > Головне - ти **свідомо** робиш перетворення. --- ### 2. Неявне перетворення (implicit) JS сам вирішує, до якого типу привести значення, щоб операція була можливою: ```javascript "5" * 2; // 10 ("5" → число) "5" + 2; // "52" (2 → рядок) 1 == "1"; // true ("1" → число) "10" - "5"; // 5 null + 1; // 1 undefined + 1; // NaN ``` > Іноді це призводить до **дивних результатів**: > > ```javascript > [] + {} // "[object Object]" > [] + [] // "" > true + false // 1 > ``` --- ## Ключова відмінність | Порівняння | **Явне перетворення** | **Неявне перетворення** | |---|---|---| | Хто вирішує | Розробник | JS-двигун | | Коли відбувається | Коли ти явно викликаєш `String()`, `Number()` тощо | Автоматично під час виконання виразу | | Приклад | `Number("42") → 42` | `"42" - 2 → 40` | | Контроль | Повний | Мінімальний | | Ризик помилок | Низький | Високий (особливо з `==` і `+`) | --- ## Поради - **Використовуй явне перетворення**, якщо хочеш писати передбачуваний код. - Уникай неявного порівняння (`==`), використовуй строге (`===`). - Перевіряй, які операції спричиняють автоматичне приведення: - `+` - схильний приводити до рядка - `-`, `*`, `/` - приводять до числа - `if`, `||`, `&&` - приводять до boolean --- ## Приклад для порівняння: ```javascript // Явне const a = Number("5"); // 5 const b = String(true); // "true" // Неявне const c = "5" * 2; // 10 ("5" → number) const d = "5" + 2; // "52" (2 → string) ```Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.