Elementor Header #8

49. Логические операторы

Логические операторы в JavaScript используются для выполнения логических операций над значениями и возвращения логического результата (значения true или false). Эти операторы позволяют создавать сложные логические выражения и управлять логикой программы. В этом уроке мы рассмотрим основные логические операторы и их применение.

Основные логические операторы

Оператор И (&&)

Оператор И возвращает true, если оба операнда истинны, и false в любом другом случае.

				
					let a = true;
let b = false;

console.log(a && b); // false
console.log(a && true); // true

				
			

Пример использования: Проверка, выполнены ли оба условия.

				
					let age = 25;
let hasID = true;

if (age >= 18 && hasID) {
    console.log("Можно войти в клуб");
} else {
    console.log("Доступ запрещён");
}

				
			

Оператор ИЛИ (||)

Оператор ИЛИ возвращает true, если хотя бы один из операндов истинен, и false, если оба операнда ложны.

				
					let x = true;
let y = false;

console.log(x || y); // true
console.log(false || false); // false

				
			

Пример использования: Проверка, выполнено ли хотя бы одно условие.

				
					let isWeekend = false;
let isHoliday = true;

if (isWeekend || isHoliday) {
    console.log("Можно отдохнуть");
} else {
    console.log("Работаем");
}

				
			

Оператор НЕ (!)

Оператор НЕ возвращает true, если операнд ложен, и false, если операнд истинен.

				
					let isRainy = false;

console.log(!isRainy); // true
console.log(!true); // false

				
			

Пример использования: Инвертирование значения логического выражения.

				
					let isLoggedIn = false;

if (!isLoggedIn) {
    console.log("Пожалуйста, войдите в систему");
} else {
    console.log("Добро пожаловать");
}

				
			

Оператор И (короткое замыкание)

Логические операторы && и || имеют особенности, которые называются коротким замыканием (short-circuit evaluation). Это значит, что если результат может быть однозначно определён после проверки одного из операндов, то второе значение не будет проверяться.

				
					let result = true && false; // false, так как первый операнд true, проверяется второй
let anotherResult = false || "default"; // "default", так как первый операнд false, возвращается второй

				
			

Пример использования: Установка значений по умолчанию.

				
					function greet(name) {
    name = name || "Гость";
    console.log("Привет, " + name);
}

greet("Иван"); // Привет, Иван
greet(); // Привет, Гость

				
			

Распространённые ошибки

Неверное использование операторов: Ошибки могут возникнуть, если операторы используются неправильно или в неверном контексте.

Пример ошибки:

				
					let age = 30;
let hasPermission = false;

if (age >= 18 && hasPermission = true) { // Неправильно: оператор присвоения вместо сравнения
    console.log("Доступ разрешён");
}

				
			

Исправление: Используйте оператор сравнения === вместо оператора присвоения =.

				
					if (age >= 18 && hasPermission === true) {
    console.log("Доступ разрешён");
}

				
			

Пропуск условий: Иногда одно из условий может быть пропущено, что приведёт к неверному результату.

Пример ошибки:

				
					let isWeekend = true;
let isHoliday = false;

if (isWeekend && isHoliday) {
    console.log("Можно отдохнуть");
} else {
    console.log("Работаем"); // Ошибка: не учтено условие isWeekend || isHoliday
}

				
			

Исправление: Убедитесь, что все необходимые условия учтены в логическом выражении.

Неопределённые значения: Использование логических операторов с неопределёнными или неинициализированными переменными может привести к неожиданным результатам.

Пример ошибки:

				
					let isActive;

if (isActive && isActive) {
    console.log("Активно");
} else {
    console.log("Неактивно"); // Результат будет "Неактивно" из-за неопределённого значения isActive
}

				
			

Исправление: Инициализируйте переменные перед их использованием или используйте проверки на undefined.

Заключение

Логические операторы в JavaScript позволяют создавать сложные логические выражения и управлять логикой программы. Понимание и правильное использование этих операторов помогает создавать более точные и эффективные проверки условий. Будьте внимательны к распространённым ошибкам и обязательно проверяйте результат логических выражений.

Тестовое задание

Напишите функцию isEligible, которая принимает два аргумента: age и hasID. Функция должна возвращать true, если возраст больше или равен 18 и hasID истинно. В противном случае функция должна возвращать false.

				
					function isEligible(age, hasID) {
    return age >= 18 && hasID;
}

console.log(isEligible(20, true)); // true
console.log(isEligible(16, true)); // false
console.log(isEligible(20, false)); // false

				
			

Создайте функцию shouldBuyTicket, которая принимает три аргумента: isWeekend, isHoliday и hasDiscount. Функция должна возвращать true, если хотя бы одно из условий выполнено: выходной день, праздник или есть скидка. В противном случае возвращать false.

				
					function shouldBuyTicket(isWeekend, isHoliday, hasDiscount) {
    return isWeekend || isHoliday || hasDiscount;
}

console.log(shouldBuyTicket(true, false, false)); // true
console.log(shouldBuyTicket(false, true, false)); // true
console.log(shouldBuyTicket(false, false, true)); // true
console.log(shouldBuyTicket(false, false, false)); // false

				
			

Напишите функцию getUserStatus, которая принимает аргумент isLoggedIn. Если пользователь залогинен, функция должна возвращать строку "Welcome back!". Если не залогинен, функция должна возвращать строку "Please log in".

				
					function getUserStatus(isLoggedIn) {
    return isLoggedIn ? "Welcome back!" : "Please log in";
}

console.log(getUserStatus(true)); // "Welcome back!"
console.log(getUserStatus(false)); // "Please log in"

				
			

Создайте функцию validatePassword, которая принимает аргумент password. Функция должна вернуть true, если длина пароля больше 8 символов и он содержит как буквы, так и цифры. В противном случае возвращает false.

				
					function validatePassword(password) {
    return password.length > 8 && /[a-zA-Z]/.test(password) && /[0-9]/.test(password);
}

console.log(validatePassword("password123")); // true
console.log(validatePassword("short")); // false
console.log(validatePassword("noNumbers")); // false

				
			

Эти задания помогут вам лучше понять использование логических операторов в JavaScript и их применение в различных сценариях.

logo