Перейти к основному содержимому

Истина или ложь?

@serverSerrverlesskiy

В этой главе будет много нового, но уж очень сложно быть не должно: ведь, в общем-то, всё вертится вокруг простой идеи — истина или ложь?

До сих пор мы всегда имели дело лишь с примитивными типами данных — с числами и строками. Быть может, вам уже встречался термин "примитивный" применительно к программированию? Если нет, я поясню: "примитивный" (ещё говорят "простой") означает, что этот тип данных не является объектом (к этому моменту мы ещё вернёмся) и не имеет встроенных методов работы (то есть функций⚙️).

True

Тип данных, который вам обязательно понадобятся, называется булевым boolean, или логическим. Булевый тип всегда имеет значение либо true - истина, либо false - ложь. И только так, и никак иначе! Он либо врёт, либо говорит правду — пан или пропал, свет включен или выключен, либо есть, либо нет. Вы либо сделали домашнее задание, либо нет. Только два 2️⃣ значения true или false.

Видео

Операторы равенства

Operator

Булевы значения приходятся как нельзя кстати, когда нам необходимо что-то сравнить в JavaScript. Когда такая необходимость появляется, мы сразу же вызываем операторы сравнения. Сейчас мы последовательно изучим все восемь операторов сравнения, но штука в том, что в результате работы каждого из них мы всё равно всегда останемся с булевым значением — либо true , либо false .

Равно ==

Justice

Оператор равно сначала приводит операнды к одному типу, и затем применяет строгое сравнение. Если оба операнда являются объектами, то JavaScript сравнивает внутренние ссылки, которые равны в том случае, если они ссылаются на один и тот же объект в памяти.

Синтаксис :

x == y

Примеры:

1 == 1 // истина
'1' == 1 // истина
1 == '1' // истина
3 == 5 // ложь
0 == false // истина
'foo' == 'bar' // ложь

Введите по очереди примеры в переменную bool нашего LIVE EDITOR

Интерактивный редактор
Результат
Loading...

Не равно !=

Equals

Оператор не равно возвращает true в том случае, если операнды не равны. Он аналогичен оператору равенства, перед сравнением приводит операнды к одному типу. В случае если оба операнда являются объектами, JavaScript сравнивает внутренние ссылки, которые не равны в том случае, если относятся к разным объектам в памяти.

Синтаксис :

x != y

Примеры:

1 != 2 // истина
1 != '1' // ложь
'1' != 1 // ложь
1 != true // ложь
0 != false // ложь
'foo' != 'bar' // истина

Введите по очереди примеры в переменную bool нашего LIVE EDITOR

Интерактивный редактор
Результат
Loading...

Строго равно ===

equality

Оператор возвращает истину в том случае, если операнды строго равны. В отличие от оператора равно, данный оператор не приводит операнды к одному типу.

Синтаксис :

x === y

Примеры:

3 === 3 // истина
3 === '3' // ложь
'foo' === 'foo' // истина

Оператор чётко следит за тем, чтобы и значение, и тип были строго идентичными. В случае с 3 === '3' значение, конечно, идентично, однако тип — нет: ведь первое число, а второе строка.

Введите по очереди примеры в переменную bool нашего LIVE EDITOR

Интерактивный редактор
Результат
Loading...

Строго не равно !==

ruler

Оператор строго не равно возвращает истину в том случае, если операнды не равны, или их типы отличаются друг от друга.

Синтаксис :

x !== y

Примеры:

3 !== '3' // истина
4 !== 3 // истина

Введите по очереди примеры в переменную bool нашего LIVE EDITOR

Интерактивный редактор
Результат
Loading...

Почему не надо использовать == и !=? А потому, что такой необходимости, в общем-то, никогда и нет. В любом возможном случае, когда вы можете их использовать, всегда можно использовать и строгие === и !==. Если же вы желаете большей гибкости в ответе (скажем, чтобы с одинаковым успехом принималось как 1, так и '1' или true ), то можно просто включить нужные варианты ответа в сам код (не меняя при этом ===).

Просто уясните правило

Никогда не используйте == или !=

Операторы сравнения

Больше >

not equal

Оператор больше возвращает истину в том случае, если значение левого операнда больше, чем правого.

Синтаксис :

x > y

Примеры:

4 > 3 // истина
1 > 5 // ложь

Введите по очереди примеры в переменную bool в LIVE EDITOR

Интерактивный редактор
Результат
Loading...

Меньше <

small

Оператор меньше, возвращает истину в том случае, если значение операнда слева меньше, чем значение операнда справа.

Синтаксис :

x < y

Примеры:

3 < 4 // истина
5 < 2 // ложь

Введите по очереди примеры в переменную bool нашего LIVE EDITOR

Интерактивный редактор
Результат
Loading...

Больше или равно >=

comparison operator

Оператор больше или равно, возвращает истину в том случае, если значение операнда слева больше или равно значению операнда справа.

Синтаксис :

x >= y

Примеры:

4 >= 3 // истина
3 >= 3 // истина

Введите по очереди примеры в переменную bool :

Интерактивный редактор
Результат
Loading...

Меньше или равно <=

less

Оператор меньше или равно, возвращает истину в том случае, если значение операнда слева меньше, или равно значению операнда справа.

Синтаксис :

x <= y

Примеры:

3 <= 4 // истина
3 <= 3 // истина

Введите по очереди примеры в переменную bool :

Интерактивный редактор
Результат
Loading...

Условные конструкции

boolean

Вы, должно быть, думаете: "Ну, все эти булевы-логические штуки — это было очень просто... Наверное, они довольно бесполезны, и используют их нечасто". Как бы не так! Логические значения используются в программировании более чем постоянно и всего чаще — в форме условных конструкций (или выражений).

А что такое "условная конструкция"?

thoughtful

Хороший вопрос! Условная конструкция — это такое предложение, которое используется для запуска определённых блоков кода согласно заданному условию. Условие (например, при сравнении x === y) всегда возвращает логическое значение — либо true , либо false . Соответственно, если значение true , то код следует запустить, в противном же случае блок кода следует пропустить. Рассмотрим несколько примеров.

Условные выражения с if

Instruction manual

Конструкция if выполняет инструкцию1, если условие true , если условие false , то выполняется инструкция2.

Синтаксис :

if (условие) {
инструкции1
} else {
инструкции2
}

условие - Выражение, которое является либо истинным, либо ложным.

инструкция1 - Инструкция, выполняемая в случае, если значение условиe истинно true . Может быть любой инструкцией в том числе и вложенным if. Когда никакого действия не требуется, может использоваться пустая инструкция.

инструкция2 - Инструкция, выполняемая в случае, если значение условиe ложно false . Может быть любой инструкцией, в том числе и вложенным if. Инструкции тоже можно группировать в блок. Измените год в переменной whatIsTheYearNow и обратите внимание на вывод.

Интерактивный редактор
Результат
Loading...

if не только с булевыми значениями

No

Условные выражения могут работать не только с булевыми значениями, то есть с такими, которые не точно true или false Так что мы, в общем-то, спокойно можем использовать их в скобках, как и булевы значения.

  • Все целые числа, кроме нуля — true
  • Cтрока с хотя бы одним символом true
  • Пустая строка - это false

Давайте попробуем, введите значения в переменную bool :

Интерактивный редактор
Результат
Loading...

Операторы сравнения в выражениях с if

made for each other

До сих пор мы с вами имели дело со сравнениями или с условными выражениями с if, но пока мы не использовали их вместе, а ведь они просто созданы друг для друга!

Интерактивный редактор
Результат
Loading...

Несколько условий else if

Иногда, нужно проверить несколько вариантов условия. Для этого используется блок else if. Измените год и смотрите вывод.

Интерактивный редактор
Результат
Loading...

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

В JavaScript есть три логических оператора: || (ИЛИ), && (И) и ! (НЕ).

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

Давайте рассмотрим их подробнее.

|| (ИЛИ)

Оператор «ИЛИ» выглядит как двойной символ вертикальной черты:

result = a || b

Традиционно в программировании ИЛИ предназначено только для манипулирования булевыми значениями: в случае, если какой-либо из аргументов true, он вернёт true, в противоположной ситуации возвращается false.

В JavaScript, как мы увидим далее, этот оператор работает несколько иным образом. Но давайте сперва посмотрим, что происходит с булевыми значениями.

Существует всего четыре возможные логические комбинации:

true || true // true
false || true // true
true || false // true
false || false // false

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

Обычно оператор || используется в if для проверки истинности любого из заданных условий.

Интерактивный редактор
Результат
Loading...

&& (И)

Оператор И пишется как два амперсанда &&:

result = a && b

В традиционном программировании И возвращает true, если оба аргумента истинны, а иначе – false:

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

Пример с if:

Интерактивный редактор
Результат
Loading...

! (НЕ)

Оператор НЕ представлен восклицательным знаком !.

Синтаксис довольно прост:

result = !value

Оператор принимает один аргумент и выполняет следующие действия:

Сначала приводит аргумент к логическому типу true/false. Затем возвращает противоположное значение.

Например:

!true // false
!0 // true

Условный (тернарный) оператор ?

question mark

Единственный оператор в JavaScript, принимающий три операнда: условие, за которым следует знак вопроса ?, затем выражение, которое выполняется, если условие истинно, сопровождается двоеточием :, и, наконец, выражение, которое выполняется, если условие ложно. Он часто используется в качестве укороченного варианта условного оператора if.

Синтаксис :

условие ? выражение1 : выражение2

Параметры:

условие - Выражение, принимающее значение true или false .

выражение1, выражение2 - Выражения, значения которых могут принадлежать любому типу.

Пример :

Интерактивный редактор
Результат
Loading...

React Native

Например нам нужно показать индикатор загрузки до тех пор пока дынные с сервера подгружаются, а после после показать эти данные. Пока сэмулируй это изменение вручную и заменим false на true.

EnglishMoji!

Проблемы?

Problem

Пишите в Discord или телеграмм чат, а также подписывайтесь на наши новости

JavaScript Camp

Вопросы:

Question

Какой синтаксис используется в операторе равно?

  1. x == y
  2. x = y
  3. x -- y

В каком случае оператор не равно возвращает true?

  1. Если операнды не равны
  2. Если операнды равны
  3. Если оба операнда являются объектами

Чем оператор равно отличается от строго равно?

  1. Строго равно не приводит операнды к одному типу
  2. Строго равно приводит операнды к одному типу
  3. Строго равно следит за тем, чтобы значение было идентичным, а тип нет

Какой синтаксис у оператора строго не равно?

  1. !=
  2. !==
  3. ==!

В каком случае оператор больше возвращает ложь?

  1. Если значение левого операнда больше, чем правого
  2. Если значение правого операнда больше, чем левого
  3. Если значения операнд одинаковые

Какой синтаксис у оператора больше или равно?

  1. >=
  2. > =>
  3. > <=

В каком примере оператор меньше или равно вернёт истину?

  1. 4 <= 5
  2. 5 <= 4
  3. 3 <= 2

Что такое условие?

  1. Инструкция
  2. Выражение
  3. Значение

Какой блок используется, чтобы проверить несколько вариантов условия?

  1. else if
  2. if
  3. for

Какой оператор принимает 3 операнда?

  1. Условный (тернарный) оператор
  2. Больше или равно
  3. Меньше или равно

Какой оператор сравнения предпочтительнее для проверки - значения не равны?

  1. ===
  2. !=
  3. !==

Какие два оператора сравнения рекомендуют не использовать в коде?

  1. > и <
  2. == и !=
  3. => и <=

Какой оператор сравнения проверяет, меньше ли значение справа или равно значению слева?

  1. <=
  2. =>
  3. >=

Какие общие инструкции в кодировании используются для выполнения определенных блоков кода на основе заданного условия?

  1. Логическое выражение
  2. Условное выражение
  3. Разные выражения

Какого рода оператор запускается только тогда, когда условие для блока if принимает значение false?

  1. if
  2. else if
  3. else

Операторы сравнения всегда дают значение true или false.

  1. true
  2. false

Иногда внутри оператора else можно использовать операторы сравнения.

  1. true
  2. false

Оператор if / else может использоваться только вне функции.

  1. true
  2. false

Подобно операторам сравнения, операторы ___ (&&, || и !) Отлично работают в условных операторах.

  1. условия
  2. сравнения
  3. логики

Чему равно 53 >= 53 && !(51 <= 52)?

  1. true
  2. false

Если условие в скобках блока if возвращает ложь, какой синтаксис можно использовать для проверки другого условия перед преобразованием в блок else?

  1. else if
  2. if
  3. else

Как называется единственный логический оператор, который всегда возвращает логическое значение? Какой символ у этого логического оператора?

  1. !
  2. ||
  3. &&

Как называется логический оператор, который вернет истинное значение, если оно имеет истинное значение с обеих сторон? Какой символ у этого логического оператора?

  1. ||
  2. &&
  3. оба

Чему равно true || false?

  1. true
  2. false

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

EnglishMoji!

Ссылки:

  1. MDN web docs - Операторы сравнения
  2. Код для подростков: прекрасное руководство по программированию для начинающих, том 1: Javascript - Jeremy Moritz

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋