Логические операторы: ИЛИ
Второй логический оператор — ||, что значит «или». «Если сегодня суббота или воскресенье, то это выходной»:
const day = "воскресенье";
if (day === "суббота" || day === "воскресенье") {
console.log("Выходной");
}Это выведет:
ВыходнойУсловие, объединённое с помощью ||, истинно, если истинна хотя бы одна из его частей. Оно ложно, только если ложны все части:
true || true— этоtruetrue || false— этоtruefalse || true— этоtruefalse || false— этоfalse
Типичная ошибка — сокращать условие так, как мы говорим: day === "суббота" || "воскресенье". JavaScript воспринимает правую часть отдельно: это просто текст "воскресенье", а не сравнение. Непустой текст считается истиной, поэтому всё условие всегда истинно, даже в понедельник. У каждой части должно быть своё сравнение: day === "суббота" || day === "воскресенье".
В одном условии можно использовать и &&, и ||. Как умножение выполняется раньше сложения, так && выполняется раньше ||. Используйте скобки, чтобы сгруппировать то, что относится друг к другу, как в математике:
const day = "суббота";
const temperature = 15;
if ((day === "суббота" || day === "воскресенье") && temperature > 20) {
console.log("Поедем за город");
} else {
console.log("Останемся дома");
}Это выведет:
Останемся домаЧасть в скобках вычисляется первой: сегодня суббота, значит, она истинна. Но temperature > 20 ложно, а true && false — ложь. Без скобок JavaScript сначала объединил бы day === "воскресенье" && temperature > 20, и условие было бы истинным в любую субботу, какой бы ни была погода.
Задание
- 1
Кинотеатр даёт скидку студентам и людям от 65 лет. Напишите инструкцию
if, которая выводитСкидка, еслиisStudentистинно илиageне меньше65. Используйте||. - 2
Новое правило: скидки только по средам. Добавьте
&& day === "среда"в конец условия, возьмите часть с||в скобки и добавьте веткуelse, которая выводитПолная цена. Сегодня понедельник, поэтому программа выводитПолная цена.