Проверяет понимание работы логических операторов && и || в JavaScript, включая механизм короткого замыкания и возвращаемые значения.
Логические операторы && (И) и || (ИЛИ) в JavaScript отличаются от аналогичных операторов в других языках тем, что они не всегда возвращают булево значение true или false. Вместо этого они возвращают значение одного из операндов, следуя принципу короткого замыкания (short-circuit evaluation). Это означает, что второй операнд вычисляется только в том случае, если это необходимо для определения результата.
Оператор && вычисляет операнды слева направо. Как только встречается первое ложное (falsy) значение, он немедленно возвращает его, не вычисляя остальные. Если все операнды истинны (truthy), возвращается последнее значение.
console.log(0 && 'hello'); // 0 (первое falsy)
console.log(1 && 'world'); // 'world' (все truthy, возвращается последнее)
console.log(true && false && 3); // false (первое falsy)Оператор || также вычисляет операнды слева направо. Как только встречается первое истинное (truthy) значение, он возвращает его, игнорируя остальные. Если все операнды ложны, возвращается последнее значение.
console.log(0 || 'hello'); // 'hello' (первое truthy)
console.log('' || null || 0); // 0 (все falsy, возвращается последнее)
console.log(undefined || 42 || false); // 42 (первое truthy)Короткое замыкание часто используется для установки значений по умолчанию или для условного выполнения кода. Например:
const name = userInput || 'Гость'; // Если userInput falsy, используем 'Гость'
const isAdmin = user && user.role === 'admin'; // Безопасная проверка свойстваВ первом примере, если userInput равен пустой строке, null или undefined, переменная name получит значение 'Гость'. Во втором примере, если user равен null или undefined, оператор && вернет это значение, и ошибка обращения к свойству role не возникнет.
Понимание короткого замыкания необходимо для написания лаконичного и безопасного кода на JavaScript. Эти операторы широко применяются для установки значений по умолчанию, условного выполнения функций и безопасного доступа к свойствам объектов, особенно при работе с потенциально null или undefined значениями.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию