Ответ
В JavaScript есть три основных логических оператора, которые работают с булевыми значениями, но могут возвращать значения любого типа благодаря механизму "короткого замыкания" (short-circuit evaluation) и приведению типов.
-
Логическое И (
&&)- Возвращает первый ложный операнд. Если все операнды истинные, возвращает последний.
console.log(true && false); // false console.log('Hello' && 42); // 42 (последний истинный операнд) console.log(0 && 'World'); // 0 (первый ложный операнд) - Используется для условного выполнения кода:
isUserLoggedIn && showDashboard().
- Возвращает первый ложный операнд. Если все операнды истинные, возвращает последний.
-
Логическое ИЛИ (
||)- Возвращает первый истинный операнд. Если все операнды ложные, возвращает последний.
console.log(false || true); // true console.log(null || 'default'); // 'default' (первый истинный) console.log('' || 0 || null); // null (последний ложный) - Часто используется для задания значений по умолчанию (хотя сейчас чаще используют
??).
- Возвращает первый истинный операнд. Если все операнды ложные, возвращает последний.
-
Логическое НЕ (
!)- Инвертирует булево значение операнда, сначала приводя его к логическому типу.
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)