← Назад к вопросам

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

2.2 Middle🔥 222 комментариев
#Теория тестирования#Фреймворки тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Логические операторы в 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), которые влияют на поведение операторов && и ||.