Как использовать логические конструкции и тип boolean

Как использовать логические конструкции и тип данных Boolean? Часть 1

Александр Дудукало
Александр Дудукало Автор одноименного YouTube-канала
19 февраля 2025

Рассказываем, как работать с условным оператором if и конструкцией if…else, а также операторами и операндами.

Изображение записи

Привет! Я — Александр Дудукало, автор базового курса по JavaScript. Сегодня поговорим о логических конструкциях и логический тип данных Boolean. С их помощью можно выполнять любой код на основе определенных условий — грубо говоря, учить наши программы «думать». Пригодится начинающим разработчикам.

В предыдущих частях мы разбирали функции в JavaScript и HTML-элементы. Если вы еще не знакомы с материалами, рекомендуем начать с них.

Как использовать типы данных в JavaScript? Переменные, ввод и вывод информации

Функции в JavaScript: учимся писать структурированные программы

Как создавать HTML-элементы в JavaScript? Работа с командами и стилями

Условный оператор if

Создаем новый проект, как делали в предыдущих инструкциях. Добавляем файлы index.html и main.js.
В main.js пишем конструкцию Условный оператор if:


    // Условный оператор if
if (условие) {
    // тело условного оператора.
    // В этом месте будет выполнен код согласно вашему условию
}

Задаем возраст для пользователя и добавляем условие, чтобы его проверить. 


    let age = Number(prompt("Введите возраст:"));
document.write(`<p>Возраст пользователя: ${age}</p>`);

if (age === 18) {
    // Код который будет выполнен, если условие верное
    document.write("<p>Пользователю 18 лет</p>");
}

Если в поле prompt ввести 18, то на странице отобразится сообщение, которое подтверждает, что пользователю действительно 18 лет. Если указать значение больше или меньше 18, то в браузере ничего не появится. Все потому, что условие age === 18 является логическим выражением, результатом которого будет одно из значений true или false — в зависимости от правдивости этого условия.

True — булевое значение, тип данных. Это истина.

False — булевое значение, тип данных. Это ложь.

Булевое значение — специальный тип данных, которое принимает только истину или ложь.

Изображением с возрастом пользователя.
Пример из браузера.

Операторы и операнды

Теперь познакомимся с операторами условия и с операндами. Не пугайтесь заумных слов, все гораздо проще, чем кажется.

Оператор — символ или ключевое слово, которое выполняет операции над значениями. Пример: +, -, *, = и другие.

Операнд — значение, над которым выполняется операция. Пример: 5 + 3, где 5 и 3 — операнды, + — оператор.

Рассмотрим код. В условии находятся два операнда и оператора. Значение age и 18 — операнды, а === — операторы. 


    if (age === 18) {
    // Код который будет выполнен, если условие верное
    document.write("<p>Пользователю 18 лет </p>")
}

Пример кода.

На самом деле операторов много, но для упрощения будем использовать лишь некоторые из них. Операнды могут быть чем угодно — например, числом, строкой, объектом или булевым значением. 

Список операторов

Тройное равенство (===). Строгое равенство сравнивает два операнда между собой. Если они равны, то условие соответствует true, если не равны, то false

Нестрогое равенство (==). Так же помогает выполнять сравнение значений, но с приведением типов. При этом можно сравнивать разные типы данных, например “5” == 5.

Если хотите избежать неожиданного результата из-за особенностей устройства языка, рекомендуем использовать строгое равенство.

Подставим в условие 2 === 2 или 2 === 3 и посмотрим на результат. В консоли увидим значение true и false.


    console.log(2 === 2); // true
console.log(2 === 3); // false

Пример кода.

Строгое неравенство (!==). Прямая противоположность строгому неравенству. Оператор сравнивает два значения и возвращает true, если они не равны или имеют разные типы, и false в противном случае.


    console.log(2 !== 2); // false
console.log(2 !== 3); // true

Пример кода.

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

Условие == и != являются нестрогим равенством и неравенством. Рассмотрим на примере. Пишем в условие два разных типа данных 2 == “2”. Результат в браузере будет true, хотя сравниваем два разных типа, строку и число. 

Если сравнить строгим равенством 2 === “2”, то получим false. Все дело в приведении типов. Будьте осторожны при написании кода, если захотите использовать данные операторы в работе.


    console.log(2 == "2"); // true
console.log(2 === "2"); // false

Пример кода.

Символы больше, меньше, больше или равно, меньше или равно являются операторами >, <, >=, <=. С ними тоже не все так просто. Операторы >, < являются строгими, тогда как >=, <= нестрогими. Строгие операторы не учитывают случаи равенства, а нестрогие — наоборот. JavaScript — динамический язык программирования, это одно из его преимуществ и недостатков.


    console.log(2 > 1); // true
console.log(2 < 1); // false
console.log(2 >= 1); // true
console.log(2 <= 1); // false
console.log(2 >= 2); // true
console.log(2 <= 2); // false

Пример кода.

Конструкция if…else

Теперь, когда мы закончили с теорией и выдохнули, можно приступать к дальнейшему изучению условного оператора if. Оператор может выполнять код при ложном результате условия, если использует ключевое слово else.


    // Условный оператор if
if (условие) {
    // тело условного оператора.
    // В этом месте будет выполнен код согласно вашему условию
} else {
    // В этом месте будет выполнен код, ЕСЛИ условие неверное
}

Пример кода.

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


    let age = Number(prompt("Введите возраст:"));
document.write(`<p>Возраст пользователя: ${age}</p>`);

if (age === 18) {
    // Код который будет выполнен, если условие верное
    document.write("<p>Пользователю 18 лет</p>");
} else {
    document.write("<p>Пользователю не 18 лет</p>");
}

Пример кода.

Перейдем в браузер и проверим результаты.

Изображением с возрастом пользователя.
Пример из браузера.

Если ввести число, которое не соответствует условию оператора if, то будет выполняться вторая часть конструкции if…else. В нашем случае программа произвела ответвление и показала результат «Пользователю не 18 лет».
Теперь заменим условие на оператор > или <, вместо ===, чтобы понять, как будет работать программа в зависимости от того, что хотели сделать.


    let age = Number(prompt("Введите возраст:"));
document.write(`<p>Возраст пользователя: ${age}</p>`);

if (age > 18) {
    // Код который будет выполнен, если условие верное
    document.write("<p>Пользователь совершеннолетний</p>");
} else {
    document.write("<p>Пользователю не совершеннолетний</p>");
}

Пример кода.

Смотрим на разные результаты.

Изображением с возрастом пользователя.
Пример из браузера, если возраст больше 18.
Изображением с возрастом пользователя.
Пример из браузера, если возраст меньше 18.
Изображением с возрастом пользователя.
Пример из браузера, если возраст равен 18.

Обратите внимание, какой результат получился в последнем примере. Оператор > или < строго сравнивает операнды. Если ввести 18, то программа начнет сравнивать его со значением 18. Числа равны, но поскольку условие гласит age > 18, программа выводит то, что мы и хотели — «Пользователь несовершеннолетний». Однако это можно исправить с помощью логических операторов.

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

Логические операторы — это специальные символы, которые изменяют или комбинируют логические значения типа Boolean — true и false. Проще говоря, соединяют между собой условия.

|| оператор ИЛИ возвращает значение true (истина), если хотя бы одно из операндов истинно. Если оба операнда ложны, результат будет false (ложь).

Пример правила для ИЛИ:


    Пример правила для ИЛИ
true || true // true
true || false // true
false || true // true
false || false // false

&& оператор И возвращает значение true (истина) только в том случае, если оба операнда истинны. Если хотя бы одно из выражений ложно, результат будет false (ложь).

Пример правила для И:


    true & true // true
true & false // false
false & true // false
false & false // false

Приведем пример. 2 > 1 || 2 < 1 // — два больше одного ИЛИ два меньше одного.

2 !== 2 И 2  === 2 // — число 2 не равно числу 2 И Число 2 равно числу 2. Операторы || и & объединяют условия вместе.

Изменим наше условие на age > 18 || age === 18. Посмотрим, что получится.


    let age = Number(prompt("Введите возраст:"));
document.write(`<p>Возраст пользователя: ${age}</p>`);

if (age > 18 || age === 18) {
    // Код который будет выполнен, если условие верное
    document.write("<p>Пользователь совершеннолетний</p>");
} else {
    document.write("<p>Пользователю не совершеннолетний</p>");
}

Пример кода.

Изображением с возрастом пользователя.
Пример из браузера, если возраст равен 18.

Логические операторы — это булевая алгебра. С ее помощью можно создавать сложные логические выражения. Не пугайтесь, математики тут нет, только чистая логика.

При создании условия, проговаривайте вслух чтобы вы хотели получить в результате, это поможет лучше разбираться в булевой алгебре.

Вложенность

Что будет, если нужно вывести разные ответы, при этом они должны быть или true, или false? Рассмотрим на примере. 

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

Здесь поможет работа с вложенностью. Вспоминаем предыдущий материал о функция. Тут почти так же. Почти…


    let age = Number(prompt("Введите возраст:"));
document.write(`<p>Возраст пользователя: ${age}</p>`);


if (age < 17) {
    document.write("<p>Пользователь является школьником</p>");
} else {
    document.write("<p>Пользователю не является школьником</p>");
}


if (age > 18 && age < 23) {
    document.write("<p>Пользователь является студентом</p>");
} else {
    document.write("<p>Пользователю не является студентом</p>");
}

if (age > 23) {
    document.write("<p>Пользователь является работником</p>");
} else {
    document.write("<p>Пользователю не является работником</p>");
}

Пример кода.

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

Здесь можно использовать вложенность условного оператора. Это полезно, если необходимо сделать условие динамическим. Однако такая структура может усложнить читаемость кода и его дальнейшее исправление. Поэтому пока вы учитесь, старайтесь придерживаться структурированного подхода.


    let age = Number(prompt("Введите возраст:"));
document.write(`<p>Возраст пользователя: ${age}</p>`);


if (age < 17) {
    document.write("<p>Пользователь является школьником</p>");
} else {
    document.write("<p>Пользователю не является школьником</p>");


    if (age > 18 && age < 23) {
        document.write("<p>Пользователь является студентом</p>");
    } else {
        document.write("<p>Пользователю не является студентом</p>");

        if (age > 23) {
            document.write("<p>Пользователь является работником</p>");
        } else {
            document.write("<p>Пользователю не является работником</p>");
        }
    }
}

Пример кода.

Обратите внимание, что логический оператор && использует две части условия и проверяет их на true или false. Если true || false, значит и результат будет true. У && работает по-другому: если true || false, то получаем false, но если true || true, то true.

Главное не запутаться. Тема сложная, рассмотрим подробнее в следующей части. 

Заключение

Сегодня мы познакомились с условным оператором if и узнали, как работает конструкция  if…else. Ознакомились с операторами и операндами, а также разобрались, как работать с условиями. В тексте рассмотрели только базовую часть работы с условными операторами. В следующей части затронем switch…case и тернарный оператор. Видеоверсия урока доступна по ссылке