Истина или ложь?
В этой главе будет много нового, но уж очень сложно быть не должно: ведь, в общем-то, всё вертится вокруг простой идеи — истина или ложь?
До сих пор мы всегда имели дело лишь с примитивными типами данных — с числами и строками. Быть может, вам уже встречался термин "примитивный" применительно к программированию? Если нет, я поясню: "примитивный" (ещё говорят "простой") означает, что этот тип данных не является объектом (к этому моменту мы ещё вернёмся) и не имеет встроенных методов работы (то есть функций⚙️).
Тип данных, который вам обязательно понадобятся, называется булевым boolean
, или логическим. Булевый тип всегда имеет значение либо true
- истина, либо false
- ложь. И только так, и никак иначе! Он либо врёт, либо говорит правду — пан или пропал, свет включен или выключен, либо есть, либо нет. Вы либо сделали домашнее задание, либо нет. Только два 2️⃣ значения true
или false
.
Видео
Операторы равенства
Булевы значения приходятся как нельзя кстати, когда нам необходимо что-то сравнить в JavaScript. Когда такая необходимость появляется, мы сразу же вызываем операторы сравнения.
Сейчас мы последовательно изучим все восемь операторов сравнения, но штука в том, что в результате работы каждого из них мы всё равно
всегда останемся с булевым значением — либо true
, либо false
.
Равно ==
Оператор равно сначала приводит операнды к одному типу, и затем применяет строгое сравнение. Если оба операнда являются объектами, то JavaScript сравнивает внутренние ссылки, которые равны в том случае, если они ссылаются на один и тот же объект в памяти.
Синтаксис :
x == y
Примеры:
1 == 1 // истина
'1' == 1 // истина
1 == '1' // истина
3 == 5 // ложь
0 == false // истина
'foo' == 'bar' // ложь
Введите по очереди примеры в переменную bool
нашего LIVE EDITOR
Не равно !=
Оператор не равно возвращает true
в том случае, если операнды не равны. Он аналогичен оператору равенства, перед сравнением приводит операнды к одному типу. В случае если оба операнда являются объектами, JavaScript сравнивает внутренние ссылки, которые не равны в том случае, если относятся к разным объектам в памяти.
Синтаксис :
x != y
Примеры:
1 != 2 // истина
1 != '1' // ложь
'1' != 1 // ложь
1 != true // ложь
0 != false // ложь
'foo' != 'bar' // истина
Введите по очереди примеры в переменную bool
нашего LIVE EDITOR
Строго равно ===
Оператор возвращает истину в том случае, если операнды строго равны. В отличие от оператора равно, данный оператор не приводит операнды к одному типу.
Синтаксис :
x === y
Примеры:
3 === 3 // истина
3 === '3' // ложь
'foo' === 'foo' // истина
Оператор чётко следит за тем, чтобы и значение, и тип были строго идентичными. В случае с 3 === '3'
значение, конечно, идентично, однако тип — нет: ведь первое число, а второе строка.
Введите по очереди примеры в переменную bool
нашего LIVE EDITOR
Строго не равно !==
Оператор строго не равно возвращает истину в том случае, если операнды не равны, или их типы отличаются друг от друга.
Синтаксис :
x !== y
Примеры:
3 !== '3' // истина
4 !== 3 // истина
Введите по очереди примеры в переменную bool
нашего LIVE EDITOR
Почему не надо использовать ==
и !=
? А потому, что такой необходимости, в общем-то, никогда и нет. В любом возможном случае, когда вы можете их использовать, всегда можно использовать и строгие ===
и !==
. Если же вы желаете большей гибкости в ответе (скажем, чтобы с одинаковым успехом принималось как 1
, так и '1'
или true
), то можно просто включить нужные варианты ответа в сам код (не меняя при этом ===
).
Никогда не используйте ==
или !=
Операторы сравнения
Больше >
Оператор больше возвращает истину в том случае, если значение левого операнда больше, чем правого.
Синтаксис :
x > y
Примеры:
4 > 3 // истина
1 > 5 // ложь
Введите по очереди примеры в переменную bool
в LIVE EDITOR
Меньше <
Оператор меньше, возвращает истину в том случае, если значение операнда слева меньше, чем значение операнда справа.
Синтаксис :
x < y
Примеры:
3 < 4 // истина
5 < 2 // ложь
Введите по очереди примеры в переменную bool
нашего LIVE EDITOR
Больше или равно >=
Оператор больше или равно, возвращает истину в том случае, если значение операнда слева больше или равно значению операнда справа.
Синтаксис :
x >= y
Примеры:
4 >= 3 // истина
3 >= 3 // истина
Введите по очереди примеры в переменную bool
:
Меньше или равно <=
Оператор меньше или равно, возвращает истину в том случае, если значение операнда слева меньше, или равно значению операнда справа.
Синтаксис :
x <= y
Примеры:
3 <= 4 // истина
3 <= 3 // истина
Введите по очереди примеры в переменную bool
:
Условные конструкции
Вы, должно быть, думаете: "Ну, все эти булевы-логические штуки — это было очень просто... Наверное, они довольно бесполезны, и используют их нечасто". Как бы не так! Логические значения используются в программировании более чем постоянно и всего чаще — в форме условных конструкций (или выражений).
А что такое "условная конструкция"?
Хороший вопрос! Условная конструкция — это такое предложение, которое используется для запуска определённых блоков кода согласно заданному условию. Условие (например, при сравнении x === y
) всегда возвращает логическое значение — либо true
, либо false
. Соответственно, если значение true
, то код следует запустить, в противном же случае блок кода следует пропустить. Рассмотрим несколько примеров.
Условные выражения с if
Конструкция if
выполняет инструкцию1
, если условие true
, если условие false
, то выполняется инструкция2
.
Синтаксис :
if (условие) {
инструкции1
} else {
инструкции2
}
условие
-
Выражение, которое является либо истинным, либо ложным.
инструкция1
-
Инструкция, выполняемая в случае, если значение условиe
истинно true
. Может быть любой инструкцией в том числе и вложенным if
. Когда никакого действия не требуется, может использоваться пустая инструкция.
инструкция2
-
Инструкция, выполняемая в случае, если значение условиe
ложно false
. Может быть любой инструкцией, в том числе и вложенным if
. Инструкции тоже можно группировать в блок. Измените год в переменной whatIsTheYearNow
и обратите внимание на вывод.
if
не только с булевыми значениями
Условные выражения могут работать не только с булевыми значениями, то есть с такими, которые не точно true
или false
Так что мы, в общем-то, спокойно можем использовать их в скобках, как и булевы значения.
- Все целые числа, кроме нуля —
true
- Cтрока с хотя бы одним символом
true
- Пустая строка - это
false
Давайте попробуем, введите значения в переменную bool
:
Операторы сравнения в выражениях с if
До сих пор мы с вами имели дело со сравнениями или с условными выражениями с if
, но пока мы не использовали их вместе, а ведь они просто созданы друг для друга!
Несколько условий else if
Иногда, нужно проверить несколько вариантов условия. Для этого используется блок else if
. Измените год и смотрите вывод.
Логические операторы
В JavaScript есть три логических оператора: ||
(ИЛИ), &&
(И) и !
(НЕ).
Несмотря на своё название, данные операторы могут применяться к значениям любых типов. Полученные результаты также могут иметь различный тип.
Давайте рассмотрим их подробнее.
||
(ИЛИ)
Оператор «ИЛИ» выглядит как двойной символ вертикальной черты:
result = a || b
Традиционно в программировании ИЛИ предназначено только для манипулирования булевыми значениями: в случае, если какой-либо из аргументов true
, он вернёт true
, в противоположной ситуации возвращается false
.
В JavaScript, как мы увидим далее, этот оператор работает несколько иным образом. Но давайте сперва посмотрим, что происходит с булевыми значениями.
Существует всего четыре возможные логические комбинации:
true || true // true
false || true // true
true || false // true
false || false // false
Как мы можем наблюдать, результат операций всегда равен true
, за исключением случая, когда оба аргумента false
.
Обычно оператор ||
используется в if
для проверки истинности любого из заданных условий.
&&
(И)
Оператор И пишется как два амперсанда &&
:
result = a && b
В традиционном программировании И возвращает true
, если оба аргумента истинны, а иначе – false
:
true && true // true
false && true // false
true && false // false
false && false // false
Пример с if
:
!
(НЕ)
Оператор НЕ представлен восклицательным знаком !
.
Синтаксис довольно прост:
result = !value
Оператор принимает один аргумент и выполняет следующие действия:
Сначала приводит аргумент к логическому типу true/false
.
Затем возвращает противоположное значение.
Например:
!true // false
!0 // true
Условный (тернарный) оператор ?
Единственный оператор в JavaScript, принимающий три операнда: условие
, за которым следует знак вопроса ?
, затем выражение
, которое выполняется, если условие истинно, сопровождается двоеточием :
, и, наконец, выражение
, которое выполняется, если условие ложно. Он часто используется в качестве укороченного варианта условного оператора if
.
Синтаксис :
условие ? выражение1 : выражение2
Параметры:
условие
- Выражение, принимающее значение true
или false
.
выражение1
, выражение2
- Выражения, значения которых могут принадлежать любому типу.
Пример :
React Native
Например нам нужно показать индикатор загрузки до тех пор пока дынные с сервера подгружаются, а после после показать эти данные. Пока сэмулируй это изменение вручную и заменим false
на true
.
Проблемы?
Пишите в Telegram или ВКонтакте, а также подписывайтесь на наши новости
Вопросы:
Какой синтаксис используется в операторе равно?
x == y
x = y
x -- y
В каком случае оператор не равно возвращает true
?
- Если операнды не равны
- Если операнды равны
- Если оба операнда являются объектами
Чем оператор равно отличается от строго равно?
- Строго равно не приводит операнды к одному типу
- Строго равно приводит операнды к одному типу
- Строго равно следит за тем, чтобы значение было идентичным, а тип нет
Какой синтаксис у оператора строго не равно?
!=
!==
==!
В каком случае оператор больше возвращает ложь?
- Если значение левого операнда больше, чем правого
- Если значение правого операнда больше, чем левого
- Если значения операнд одинаковые
Какой синтаксис у оператора больше или равно?
>=
> =>
> <=
В каком примере оператор меньше или равно вернёт истину?
4 <= 5
5 <= 4
3 <= 2
Что такое условие?
- Инструкция
- Выражение
- Значение
Какой блок используется, чтобы проверить несколько вариантов условия?
else if
if
for
Какой оператор принимает 3 операнда?
- Условный (тернарный) оператор
- Больше или равно
- Меньше или равно
Какой оператор сравнения предпочтительнее для проверки - значения не равны?
===
!=
!==
Какие два оператора сравнения рекомендуют не использовать в коде?
> и <
== и !=
=> и <=
Какой оператор сравнения проверяет, меньше ли значение справа или равно значению слева?
<=
=>
>=
Какие общие инструкции в кодировании используются для выполнения определенных блоков кода на основе заданного условия?
- Логическое выражение
- Условное выражение
- Разные выражения
Какого рода оператор запускается только тогда, когда условие для блока if
принимает значение false
?
if
else if
else
Операторы сравнения всегда дают значение true
или false
.
true
false
Иногда внутри оператора else
можно использовать операторы сравнения.
true
false
Оператор if / else
может использоваться только вне функции.
true
false
Подобно операторам сравнения, операторы ___ (&&
, ||
и !
) Отлично работают в условных операторах.
- условия
- сравнения
- логики
Чему равно 53 >= 53 && !(51 <= 52)
?
true
false
Если условие в скобках блока if
возвращает ложь, какой синтаксис можно использовать для проверки другого условия перед преобразованием в блок else
?
else if
if
else
Как называется единственный логический оператор, который всегда возвращает логическое значение? Какой символ у этого логического оператора?
!
||
&&
Как называется логический оператор, который вернет истинное значение, если оно имеет истинное значение с обеих сторон? Какой символ у этого логического оператора?
||
&&
- оба
Чему равно true || false
?
true
false
Для того чтобы понять, на сколько вы усвоили этот урок, пройдите тест в мобильном приложении нашей школы по этой теме или в нашем телеграм боте.
Ссылки:
- MDN web docs - Операторы сравнения
- Код для подростков: прекрасное руководство по программированию для начинающих, том 1: Javascript - Jeremy Moritz
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 |