Логічні оператори присвоєння в JavaScript

Уяви собі коробку з іменем x. І є ще інша річ y, яку ми, можливо, хочемо покласти в цю коробку.

Залежно від того, що вже є в коробці, ми або кладемо y, або нічого не змінюємо.


x &&= y

“Кладемо y, тільки якщо в коробці вже щось є.”

  • Якщо коробка не пуста → кладемо y.
  • Якщо пуста → нічого не робимо.

Приклад:

jsCopyEditlet x = "цукерка";
x &&= "яблуко"; // коробка не пуста → кладемо яблуко
console.log(x); // "яблуко"

x ||= y

“Кладемо y, якщо в коробці нічого немає або там нісенітниця.”

  • Якщо пусто, або там щось типу 0, false, "" → кладемо y.
  • Якщо вже щось є → залишаємо як є.

Приклад:

jsCopyEditlet x = "";
x ||= "печиво"; // пусто → кладемо печиво
console.log(x); // "печиво"

x ??= y

“Кладемо y, якщо коробка ВЗАГАЛІ не створена або має null.”

  • Якщо x === null або x === undefined → кладемо y.
  • Якщо навіть x = 0 або "" → нічого не змінюємо.

🧸 Приклад:

jsCopyEditlet x = null;
x ??= "іграшка"; // null → кладемо іграшку
console.log(x); // "іграшка"

🧠 Просте порівняння

ОператорКоли кладе нове значення?Як запам’ятати
&&=Якщо вже є щось хороше“є — замінюємо”
`=`
??=Якщо null або undefined (тобто взагалі пусто)