Skip to main content

Явне і неявне перетворення типів

Явне (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)

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.