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

Конструкция if else в jsю Логические операторы. Операторы сравнения

В этой статье мы рассмотрим:

Условная конструкция if...else в JavaScript

Условная конструкция if...else в JavaScript имеет такой синтаксис:

В качестве условия необходимо использовать некое выражение, которое является либо истинным, либо ложным. Иными словами результатом проверки условия в круглых скобках будет либо true, либо false.
Под блоком операций 1 подразумевается одно или несколько действий, которые выполняются в случае, если "условиe" истинно (или  true). Здесь могут быть использованы любые операторы, в том числе и вложенный if. Для группировки нескольких действий используется блок  с фигурными скобками{...}. Если действие всего одно, фигурные скобки можно не ставить. Если условие возвращает true, но при этом  не требуется выполнять никакого действия, можно поставить ;, т.е. использовать пустую инструкцию.

В блоке операций 2 помещают ряд действий, которые выполняются в том случае, если  условиe ложно ( то есть возвращает false). Можно использовать любые операторы, в том числе и вложенный if. Для группировки нескольких действий используется блок  с фигурными скобками{...}. Если действие всего одно, фигурные скобки можно не ставить. Если нет действий, которые нужно сделать, если условие возвращает false, else просто не записывают.

Например, нужно узнать,  является ли ли число, введенное пользователем, четным. Для реализации воспользуемся не формой, а диалоговым окном prompt() для ввода числа и alert() для вывода результата:

Попробуйте сами:

В этой ситуации, если результатом проверки условия является true или false,  в блоке операций 1 и 2 находится 1 строка кода. Поэтому фигурные скобки можно опустить. Код сократиться, но при этом будет вполне работоспособным:

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

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

Для сравнения различных данных в JavaScript в конструкции if...else нужно использовать операторы сравнения, которые,  скорей всего, хорошо знакомы вам из курса школьной математики. Они предполагают сравнение типа "равно", "больше"/"меньше", "равно", "больше либо равно", "меньше либо равно". Но в математике, сравнивая 2 числа или 2 выражения, вы как бы отвечали на вопрос 67>25 "да", 25<14 "нет", а в JavaScript результатом сравнения будут логические типы данных true или false, которые как раз используются в условии if..else. Плюс в JavaScript есть строгое равенство, которое предполагает сравнение типов данных.

Операторы сравнения
Оператор Описание Примеры, возвращающие true
Больше (>) Возвращает true, если операнд слева больше операнда справа. x > y
"123" > 120
Больше или равно (>=) Возвращает true, если операнд слева больше или равен операнду справа. x >= y
23 >= 23
Меньше (<) Возвращает true, если операнд слева меньше операнда справа. x < y
"2" < 12
Меньше или равно (<=) Возвращает true, если операнд слева меньше или равен операнду справа. x <= y
78 <= 80
Равно (==) Возвращает true, если операнды равны. x == y
40 == 40
12 == '12'
Не равно (!=) Возвращает true, если операнды не равны. x!= y
13 != "3"
Строго равно (===) Возвращает true, если операнды равны и имеют одинаковый тип. x === y
5 === 5
Строго не равно(!==) Возвращает true, если операнды не равны и/или имеют разный тип. x !== "3"
3 !== '3'

Рассмотрим примеры использования операторов сравнения >, <, ==:

 

Код этого примера таков:

В этом примере использовано несколько условных конструкций if...else, т.к. нужно выполнить несколько проверок. Вывод результата происходит в абзац с id="compareResult" с помощью свойства innerHTML.

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

Кроме операторов сравнения, в условных конструкциях JavaScript можно использовать три логических оператора: || (ИЛИ), && (И) и ! (НЕ). Эти операторы позволяют создавать сложные условия, в которых можно использовать комбинацию сравнительных операторов.

Логическое И

Обычно логическое И применяется для проверки на то, что оба условия возвращают true, то есть являются истинными. Например, вам нужно получить от пользователя число в диапазоне от 0 до 10 включительно, да к тому же оно должно быть четным. Получается, что нам нужно, чтобы совпали сразу 3 условия:

Попробуйте сами, нажав на кнопку ниже:

Логическое НЕ

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

В коде во втором условии с if() нет сравнения переменной isAdult с true, то есть isAdult==true в скобках отсутствует, так как сама переменная isAdult может быть либо true, либо false. Такое написание условий встречается довольно часто, причем следует также знать, что в JavaScript в качестве false в условии могут выступать еще несколько вариантов значений переменных или выражений.

К false в JavaScript относятся:

  • false
  • undefined
  • null
  • NaN (Not a Number - не число)
  • 0 (нуль)
  • '' или "" - любая пустая строка, в том числе и в обратных кавычках.

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

Протестируем пример с логическим НЕ:

Логическое НЕ для изменения свойств элементов формы

Отлично логическое НЕ используется при работе с флажками  (чекбоксами), когда в зависимости от того, отметил ли пользователь флажок, нужно сделать доступным или недоступным какое-либо текстовое поле или кнопку

В этом примере следует обратить внимание на то, что свойство checked, которое одновременно является и атрибутом для элемента типа checkbox, возвращает true, если элемент отмечен, или выделен (появляется галочка в стандартном его виде),  и false, если галочка снята. Со свойством disabled, которое добавляет соответствующий атрибут для любого элемента формы, ситуация аналогична: элемент недоступен - disabled = true,  элемент доступен - disabled=false.

Вывод: если нам нужно, чтобы элемент стал доступен (disabled=false) при выделении флажка (checked=true) нужно добавить перед свойством checked логическое НЕ (восклицательный знак), чтобы поменять его значение на противоположное. Очень компактное, хоть и не всегда сразу понятное решение задачи:

В примере ниже добавлен <div> с неким договором и ниже него расположены флажок и недоступная на данный момент кнопка. Клик по флажку делает кнопку доступной, одновременно изменяя ее внешния вид благодаря прописанным стилям, в том числе для фона и для курсора.

Некий договор для проверки условия

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Doloribus corrupti cumque mollitia aperiam, doloremque possimus impedit, expedita cupiditate, iure amet earum provident quam! Optio consequatur eum, obcaecati, quaerat architecto error.

Eaque iusto nisi tempore quidem maxime, aperiam! Obcaecati doloribus saepe illum enim consequatur iure distinctio expedita sunt quo. Quae excepturi error voluptates dolor vero, blanditiis, laborum unde laboriosam animi sequi.

Asperiores eligendi fugit, veniam doloribus quidem saepe, quis, pariatur soluta vero totam dicta quibusdam placeat. Rerum vitae harum, eveniet deleniti officia architecto, earum repellat reiciendis, ullam sint in reprehenderit. Facilis.

Doloremque repudiandae dolores, odit, velit aspernatur ipsum laborum. Numquam natus sequi eos esse rem quibusdam sit aliquam illo optio sed laudantium quam iure aperiam tempora facilis facere, porro pariatur doloribus!

Eum possimus necessitatibus numquam molestias tenetur voluptas natus debitis, earum sint, quas, esse laborum enim commodi distinctio tempore suscipit aut! Rerum perspiciatis laboriosam nesciunt est magnam, quaerat voluptatibus, sit officia.

Necessitatibus laboriosam minus voluptatum, autem quam fugit doloremque tempora, soluta blanditiis reprehenderit sequi tenetur, provident nulla architecto ullam aut a voluptatem placeat! Excepturi minima, ratione distinctio fugit neque unde impedit.

Sapiente quisquam possimus veritatis tempore in nostrum nesciunt provident cumque optio ullam, ex eos repudiandae, quis est odit magni ad autem? Commodi hic perferendis quod dolores delectus, libero enim ut!

Логическое ИЛИ

Логическое ИЛИ - это, пожалуй, самый интересный логический оператор в JavaScript. Во-первых, он позволяет сформировать условие из нескольких операторов сравнения, причём вернет true (истина), если хоть какое-либо из условий сработает. Во-вторых, логическое ИЛИ позволит выбрать одно из переданных значений, которое будет равно true, и записать его в переменную.

Рассмотрим множественные условия с использованием логического ИЛИ. В примере ниже при клике на кнопку мы выводим пользователю трижды запрос на ввод числа в диапазоне от 0 до 255. Однако в любом из диалоговых окон, выводимых методом prompt() пользователь может ввести неверное число. Поэтому нам понадобится несколько условий с логическими ИЛИ:

Чтобы скрипт не был просто проверкой, мы выведем в конце в абзац текст с данными, которые ввел пользователь на фоновом цвете, который сформирован из его данных. Если же пользователь "не попал" в нужный диапазон, будет выдано сообщение о вводе неверных данных.

Попробуйте сами работоспособность скрипта с логическими ИЛИ.

Проверка множественных условий с помощью массивов

В том случае, когда вам нужно проверить несколько условий, касающихся вполне конкретных величин, а не диапазонов, можно использовать метод массивов includes(). Вы убираете из кода длинные цепочки из логических || и сокращаете код. В этом случае изначально вам нужно сформировать некий начальный массив для проверки, в который будет входить несколько чисел, строк или объектов.

Попробуйте способ с проверкой методом includes() самостоятельно, нажав на кнопку. В диалоговом окне alert() будут выведены 2 сообщения с немного отличающимся текстом. В методе prompt() в качестве второго аргумента добавлена фамилия существующего студента. Вы можете ввести любую другую.

Проверка нескольких условия. Лестница if...else

В том случае, когда вы не можете обойтись одним условием, обычно применяется так называемая лестница if...else, которая подразумевает, что после else появляется еще одно условие с проверкой в if(...) , причем так можно повторять проверки несколько раз.

Если вы используете автоматическое форматирование в своем редакторе кода, то увидите, как каждое следующее условие смещается вправо на несколько отступов, образуя специфичные ступеньки.

Работают условия внутри лестницы if..else следующим образом. Условия, заданные внутри операторов if вычисляются сверху вниз. Когда некое условие из перечисленных в операторах if() возвращает ИСТИНУ (true), выполняется блок кода, следующий за этим if(), а оставшаяся часть лестницы пропускается. Если все условия ложны, то выполняется блок кода, связанный с последним  else. В том случае, если последний оператор  else отсутствует, не выполняется ни один оператор. Нужно призадуматься, стоит ли оставлять код без последнего else.

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

В коде мы используем встраивание изображений разной ширины и высоты по id с сайта https://unsplash.com. С помощью нескольких условий if...else мы проверяем, в какой диапазон значений попадает введенное пользователем число. Если число меньше или равно определенному значению, то к постоянному адресу изображения мы добавляем данные о ширине и высоте загружаемого фото. Тег img мы создаем динамически с помощью конструктора new Image() , формируем для него с помощью условий строку для атрибута src, а затем также динамически, только средствами JS, добавляем тег <img> перед кнопкой с помощью метода insertAdjacentElement().

Смотрим на результат работы скрипта:

 

Автор: Админ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *