Skip to main content
Практика завдань

Примус типів у JavaScript (неявний vs явний)

Що таке Примусове Перетворення Типів?

Примусове перетворення типів — це автоматичне або ручне перетворення значення з одного типу даних в інший. JavaScript є слабо типізованою мовою, тому часто виконує перетворення типів за лаштунками.


Явне Перетворення (Приведення Типів)

Коли ви навіть навмисно перетворюєте тип, використовуючи вбудовані функції:

В рядок

javascript
String(123); // "123" String(true); // "true" String(null); // "null" String(undefined); // "undefined" (123).toString(); // "123"

В число

javascript
Number("123"); // 123 Number("abc"); // NaN Number(true); // 1 Number(false); // 0 Number(null); // 0 Number(undefined); // NaN Number(""); // 0 parseInt("42px"); // 42 parseFloat("3.14"); // 3.14 +"42"; // 42 (унарний плюс)

В булевий тип

javascript
Boolean(0); // false Boolean(""); // false Boolean(null); // false Boolean(undefined); // false Boolean(NaN); // false Boolean(1); // true Boolean("hello"); // true Boolean({}); // true Boolean([]); // true !!value; // трюк з подвоєним NOT

Ложні Значення в JavaScript

Є точно 8 ложних значень:

ЗначенняТип
falseBoolean
0Number
-0Number
0nBigInt
""String (порожній)
nullnull
undefinedundefined
NaNNumber

Все інше є істинним, включаючи [], {}, "0", "false".

Непряме Перетворення

Коли JavaScript автоматично перетворює типи під час операцій:

Конкатенація Рядків (+)

javascript
"5" + 3; // "53" (число → рядок) "5" + true; // "5true" "5" + null; // "5null" "5" + {}; // "5[object Object]"

Числовий Контекст (-, *, /, %)

javascript
"5" - 3; // 2 (рядок → число) "5" * 2; // 10 "5" / "2"; // 2.5 true + 1; // 2 false + 1; // 1 null + 5; // 5 (null → 0)

Порівняння з Перетворенням

javascript
"5" == 5; // true (рядок → число) null == undefined; // true (спеціальне правило) null == 0; // false (null дорівнює лише undefined) "" == 0; // true "0" == false; // true [] == false; // true

Загальні Пастки на Співбесідах

javascript
[] + []; // "" (порожній рядок) [] + {}; // "[object Object]" {} + []; // 0 (блок + унарний плюс) true + true; // 2 "2" + "2" - "2"; // 20 ("22" - "2" = 20) null == undefined; // true null === undefined; // false NaN === NaN; // false

Важливо:

Завжди використовуйте строгу рівність (===), щоб уникнути несподіваного перетворення. Коли вам потрібно перетворення типу, робіть це явно з Number(), String(), або Boolean() для ясності.

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

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

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

Дочитали статтю?
Практика завдань