Какие знаешь логические операторы в JS?
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Логические операторы в JavaScript
В JavaScript существует семь основных логических операторов, которые используются для работы с булевыми значениями (true/false) и выполнения операций над ними. Эти операторы играют ключевую роль в условных конструкциях, валидации данных и управлении потоком выполнения программы.
Основные логические операторы
1. Логическое И (AND) - &&
Оператор && возвращает true, если оба операнда истинны. В противном случае возвращает false.
const a = true;
const b = false;
console.log(a && b); // false
console.log(a && true); // true
console.log(b && false); // false
Особенность JavaScript: оператор && возвращает первый ложный операнд или последний операнд, если все истинны (короткое замыкание вычислений).
console.log(0 && "text"); // 0 (ложное значение)
console.log("hello" && "world"); // "world" (последний истинный операнд)
2. Логическое ИЛИ (OR) - ||
Оператор || возвращает true, если хотя бы один из операндов истинен.
const isAdmin = false;
const isModerator = true;
console.log(isAdmin || isModerator); // true
console.log(false || false); // false
Аналогично &&, оператор || использует короткое замыкание и возвращает первый истинный операнд или последний, если все ложны.
console.log(null || "default"); // "default"
console.log("first" || "second"); // "first"
3. Логическое НЕ (NOT) - !
Оператор ! инвертирует булево значение операнда.
console.log(!true); // false
console.log(!false); // true
console.log(!0); // true (0 преобразуется в false)
console.log(!"hello"); // false (непустая строка преобразуется в true)
Специальные операторы ES6+
4. Оператор нулевого слияния (Nullish Coalescing) - ??
Введен в ES2020. Возвращает правый операнд, если левый равен null или undefined, в противном случае возвращает левый операнд.
const value1 = null;
const value2 = undefined;
const value3 = 0;
const value4 = "";
console.log(value1 ?? "default"); // "default"
console.log(value2 ?? "default"); // "default"
console.log(value3 ?? "default"); // 0 (не null/undefined)
console.log(value4 ?? "default"); // "" (не null/undefined)
Важное отличие от ||: оператор || возвращает правый операнд для любых ложных значений (false, 0, "", null, undefined, NaN), тогда как ?? работает только с null и undefined.
5. Оператор опциональной последовательности (Optional Chaining) - ?.
Введен в ES2020. Позволяет безопасно обращаться к свойствам вложенных объектов без проверки каждого уровня.
const user = {
profile: {
name: "John",
address: {
city: "Moscow"
}
}
};
console.log(user?.profile?.name); // "John"
console.log(user?.profile?.contacts?.phone); // undefined (без ошибки)
console.log(user?.orders?.[0]); // undefined
Логические операторы присваивания (ES2021)
6. Логическое И присваивание (Logical AND Assignment) - &&=
Присваивает значение правого операнда только если левый операнд истинен.
let x = 5;
let y = 0;
x &&= 10; // x = 10 (так как x истинный)
y &&= 10; // y = 0 (y ложный, присваивание не происходит)
console.log(x); // 10
console.log(y); // 0
7. Логическое ИЛИ присваивание (Logical OR Assignment) - ||=
Присваивает значение правого операнда только если левый операнд ложен.
let a = "";
let b = "existing";
a ||= "default"; // a = "default" (a ложный)
b ||= "new"; // b = "existing" (b истинный, присваивание не происходит)
console.log(a); // "default"
console.log(b); // "existing"
8. Оператор нулевого слияния с присваиванием (Nullish Coalescing Assignment) - ??=
Присваивает значение правого операнда только если левый операнд равен null или undefined.
let config = { timeout: 0 };
let userSettings = null;
config.timeout ??= 3000; // timeout = 0 (не null/undefined)
userSettings ??= { theme: "dark" }; // userSettings = { theme: "dark" }
console.log(config.timeout); // 0
console.log(userSettings); // { theme: "dark" }
Практическое применение в QA Automation
В автоматизации тестирования логические операторы используются повсеместно:
- Валидация условий в проверках (assertions)
- Обработка опциональных данных в тестовых сценариях
- Управление конфигурацией тестового окружения
- Обработка ответов API с возможными отсутствующими полями
- Создание гибких селекторов для поиска элементов
// Пример из автоматизации: проверка элемента с безопасным доступом
const element = await page.$('.dynamic-element');
const isVisible = await element?.isVisible() || false;
// Использование нескольких операторов для комплексной проверки
const shouldProceed = isLoggedIn && (isAdmin || isModerator) && !isBlocked;
Понимание нюансов работы логических операторов в JavaScript критически важно для написания надежного, читаемого и эффективного кода автоматизации тестов. Особое внимание стоит уделять различиям между || и ??, а также правилам преобразования типов (type coercion), которые влияют на поведение операторов && и ||.