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

Слабка (==) проти суворої (===) рівності в JavaScript

== vs === в JavaScript

JavaScript має два оператори рівності: слабка рівність (==) та сильна рівність (===). Розуміння різниці між ними є важливим для написання надійного коду.


Сильна рівність (===)

Порівнює значення І тип. Не виконується приведення типів.

javascript
5 === 5; // true 5 === "5"; // false (різні типи) true === 1; // false null === undefined; // false NaN === NaN; // false (NaN ніколи не дорівнює самому собі)

Слабка рівність (==)

Порівнює значення після приведення типів. JavaScript перетворює операнди до одного типу перед порівнянням.

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

Правила приведення для ==

ПорівнянняПриведенняРезультат
number == stringРядок → Число5 == "5" → true
boolean == anyBoolean → Число спочаткуtrue == "1" → true
null == undefinedЗавжди trueСпеціальне правило
null == 0Завжди falsenull тільки == undefined
object == primitiveОб'єкт → примітив через valueOf/toString

Порівняння об'єктів

Як ==, так і === порівнюють об'єкти по посиланню, а не по значенню:

javascript
const a = { x: 1 }; const b = { x: 1 }; const c = a; a === b; // false (різні посилання) a === c; // true (одне й те саме посилання) a == b; // false (також по посиланню) [] == []; // false {} == {}; // false

Спеціальні випадки

javascript
NaN === NaN; // false NaN == NaN; // false // Використовуйте Number.isNaN() або Object.is() замість Object.is(NaN, NaN); // true Object.is(+0, -0); // false (=== дає true)

Коли використовувати який

ОператорВикористовуйте, коли
===Завжди (за замовчуванням)
==Тільки при перевірці null == undefined
javascript
// ✅ Загальний шаблон: перевірка на null АБО undefined if (value == null) { // value є null або undefined } // Те ж саме, що й: if (value === null || value === undefined) { // value є null або undefined }

Важливо:

Завжди використовуйте === за замовчуванням. Єдине широко прийняте використання == — це перевірка на null/undefined в одному порівнянні: if (value == null). Правило ESLint eqeqeq забезпечує дотримання цієї найкращої практики.

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

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

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

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