YET ANOTHER DEVELOPER 🇺🇦

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

У JavaScript ми часто змінюємо вкладені значення об’єктів, не будучи впевненими, що всі проміжні рівні існують. Це призводить або до громіздких if-перевірок, або до ризику runtime-помилок. Стаття показує простий і сучасний підхід, який робить такі оновлення безпечними та читабельними.

Проблема

Зайві перевірки та роздутий код.

Дано

const config = {
  features: {
    payments: true,
    refunds: true
  }
}

const isBillingEnabled = false

Раніше безпечне оновлення значення виглядало якось так:

// update
if (config.features.payments) {
  config.features.payments = isBillingEnabled
}

// or
config.features.payments =
  config.features.payments && isBillingEnabled

Завдяки сучасному JS (ES2021) ми можемо зробити це простіше.

Рішення

Використання logical assignment operators (||=, &&=, ??=):

// Modern &&= operator (ES2021)
config.features.payments &&= isBillingEnabled

Таким чином &&= дозволяє безпечне оновлення тільки якщо значення null, undefined aбо false.

P.S. в коментарях автору трохи напхали, що таке використання цієї фічі є навіть небезпечним, т.я. може змінюватись тип даних і взагалі ця фіча юзлес

🌏 Оригінал: medium.com