Какие знаешь логические операторы в JS

«Какие знаешь логические операторы в JS» — вопрос из категории JavaScript, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В JavaScript есть три основных логических оператора, которые работают с булевыми значениями, но могут возвращать значения любого типа благодаря механизму "короткого замыкания" (short-circuit evaluation) и приведению типов.

  1. Логическое И (&&)

    • Возвращает первый ложный операнд. Если все операнды истинные, возвращает последний.
      console.log(true && false); // false
      console.log('Hello' && 42); // 42 (последний истинный операнд)
      console.log(0 && 'World');  // 0 (первый ложный операнд)
    • Используется для условного выполнения кода: isUserLoggedIn && showDashboard().
  2. Логическое ИЛИ (||)

    • Возвращает первый истинный операнд. Если все операнды ложные, возвращает последний.
      console.log(false || true); // true
      console.log(null || 'default'); // 'default' (первый истинный)
      console.log('' || 0 || null); // null (последний ложный)
    • Часто используется для задания значений по умолчанию (хотя сейчас чаще используют ??).
  3. Логическое НЕ (!)

    • Инвертирует булево значение операнда, сначала приводя его к логическому типу.
      console.log(!true); // false
      console.log(!0);    // true (0 -> false, !false -> true)
      console.log(!!'text'); // true (двойное НЕ для приведения к boolean)

Важное дополнение: Оператор нулевого слияния (??) Он не является классическим логическим оператором, но решает схожие задачи. Возвращает правый операнд, только если левый — null или undefined (в отличие от ||, который срабатывает на любые ложные значения).

const count = 0;
console.log(count || 10); // 10 (0 — ложное значение)
console.log(count ?? 10); // 0 (0 не null и не undefined)