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

JavaScript простым языком

Generic badge

Тема тоже очень важная и одна из фундаментальных.

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

Существует всего три логических оператора.

Логические операторы: ||, &&, !

Идём по порядку.

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

Данный оператор представляет собой две палки колбасы и, если, его называть по-русски, читая код, то он читается как ИЛИ. Он используется всегда с 2-я операндами (аргументами), т.е. является бинарным.

Результат работы этого оператора – логическое значение true или false.

Если хотя бы один из операндов (аргументов) дает логическое true, то и всё выражение в целом будет возвращать истину. Пример:

Из примера понятно, что, если один из аргументов возвращает true, то все выражение в условии возвращает истину. Еще один пример:

Здесь все отработает ровно так же. После приведения типов, переменная a выдаст значение true, а переменная b вернет значение false, но т.к., выполнилось правило и один из аргументов возвращает true, то это означает, что условие будет выполнено.

Чтобы условие с оператором || не выполнилось нужно, чтобы оба операнда (аргумента) возвращали false.

Более или менее жизненный пример. Представь, у тебя есть форум, на котором у каждого пользователя есть возможность прикреплять файлы к сообщению. Но эта возможность доступна не каждому пользователю, а только при выполнении определенных условий: пользователю не меньше 21 года или он написал более 500сообщений.

Код:

Несмотря на то, что пользователю меньше 21 года условие выполнится, потому что он написал более 500 сообщений.

Еще пример:

В этом случае условие не выполнится, потому что ни одно из условий внутри if не вернуло логическое значение true.

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

Этот оператор более придирчивый чем ||. Если оператору ИЛИ нужно хотя бы одно истинное значение, то оператор И не потерпит никаких false – всё должно быть true и только так. Только когда все операнды возвращают значение true, оператор &&вернет true.

Пример:

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

Здесь ты потерпишь фиаско, т.к., пользователю менее 21 года. Дальше JavaScript даже второе условие проверять не будет, потому как первое уже зафейлилось и вернуло false.

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

Данный оператор не похож на первые два, но также очень важен.

Оператор является унарным, т.е., применяется он только к одному операнду (аргументу). Ставится оператор всегда перед аргументом.

Все что делает оператор можно описать в 2-х шагах:

  1. Приводит операнд (аргумент) к логическому значению (true/false);

  2. Возвращает логическое значение противоположное тому, что получил в шаге 1.

Сразу же простой пример:

Надеюсь все понятно. Поэтому сразу же перейду ко второй способности этого оператора. Можно взять и поставить два знака !! перед аргументом. Что произойдет в этом случае? Не читай ответ, а подумай, основываясь на том, что ты уже прочитал об операторе. Итак, барабанная дробь! А произойдет следующее:

  1. Первый знак ! приведет аргумент к логическому значению;

  2. Затем вернет противоположное логическое значение полученное в шаге 1 и на этом полномочия первого оператора НЕ завершатся;

  3. Второй оператор НЕ проделает те же 2 шага и вторым шагом снова приведет к значению (вернув его).

Да что за…? Да-да, здесь все просто на самом деле. Данный метод используют очень часто при преобразовании в логический тип, вместо функции Boolean(..). Сам подумай, насколько проще написать так:

Нежели так:

В первом случае запись короче, а смысл абсолютно не меняется.

Домашнее задание

Задача:

Пользователю с помощью функции prompt предлагается ввести возраст.

Если возраст больше 18 лет, то с помощью еще одного prompt, нужно запросить имя пользователя.

Все эти данные нужно сохранить в переменных.

Как только ты получишь от пользователя все необходимые данные, ты должен сделать следующие проверки: если пользователю больше 25 лет и его имя John, ты должен с помощью функции alert()вывести фразу "Welcome, John". В противном случае ты должен вывести ему фразу "Who are you? I don't know you".

Last updated

Was this helpful?