10. Условные операторы

Как вы уже знаете, код JavaScript состоит из инструкций. Часто вам будет нужно, чтобы некоторые инструкции выполнялись только при определенных условиях. Например, вы делаете игру, и хотите, чтобы только когда игрок соприкасался с монетой, запускался ваш код, который удаляет монету и добавляет очки игроку. Для таких целей существуют условные операторы. Их всего два: if и switch.

Начнем с изучения условного оператора if. У него есть две формы записи. Первая форма записывается так:

В начале инструкции пишем ключевое слово if (да, if одновременно является и ключевым словом и оператором. Дело в том, что if – это оператор в виде слова (в отличии от знаков плюс, минус и т.д.), а все операторы в виде слов, являются также и ключевыми словами).

Итак, продолжаем, Транслятор, встретив оператор if ждет, что далее мы напишем скобки, а внутри этих скобок мы должны написать выражение, которое вернет либо true либо false. Если выражение внутри скобок вернет true то выполнится инструкция которая находится за скобками. Т.е. получается что у нас эта инструкция является частью этой инструкции с if, как бы две инструкции в одной: сперва выполняется инструкция if, и если значение в скобках будет true, то выполнится эта инструкция.

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

Она возвращает true или false. Оператор if после которого внутри скобок идет true исполнит инструкцию, которая находится за круглыми скобками.

Давайте напишем такой код:

А что если мы с помощью if захотим назначить значения нескольким переменным. Например, напишем такой код.

Т.е. здесь мы с помощью условного оператора if задали значения переменным b,c и d. Но как вы могли заметить я три раза написал оператор if с одинаковыми условиями. Можно ли этот код сократить? Конечно! C помощью оператора фигурные скобки. Помните мы использовали этот оператор, чтобы сгруппировать объектные литералы. Но мы также можем его использовать для группировки инструкций. Т.е. там где транслятор ожидает одну инструкцию, мы можем поставить фигурные скобки и внутри написать их сколь угодно. Данный оператор не влияет на приоритет других операторов, поэтому не входит в список приоритетов операторов.

Наш код теперь можно переписать так

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

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

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

Так как запятая разделяет только выражения внутри одной инструкции, но если мы используем ключевое слово let, то в этой инструкции мы можем объявить только переменную, или переменные, но не константу. Константу мы можем объявить только в другой инструкции. Поэтому здесь надо использовать фигурные скобки.

давайте теперь посмотрим чему равняется переменная b. И вдруг мы получаем ошибку. Здесь нам необходимо будет вскользь столкнуться с областями видимости переменных и констант. Дело в том, что если мы объявляем переменную с помощью условного оператора, то и пользоваться этой переменной можем только внутри этих фигурных скобок, больше негде. Пока на этом с областью видимости всё, в дальнейших уроках мы подробней рассмотрим эту тему.

Двигаемся дальше.

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

Итак мы разобрались с первой формой условного оператора if, но есть и вторая где у нас добавляется ключевое слово else. Данная форма нужна, чтобы по-любому какое-то действие произошло, даже если выражение в скобках выдаст false. Например, снова перезагрузим страницу. Создадим переменную a..

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

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

Вот такой уже громоздкий код получается. Можно ли его упростить? Конечно. Если вам необходимо создать множество условий, и в зависимости от них будут происходить те или иные действия, вы можете воспользоваться вторым условным оператором switch.

Он пишется так. Снова перезагрузим страницу..

В скобках теперь мы можем указать выражение которое возвращает не только true или false, но и число или строку. В основном оператор switch используют как раз со строками и числами. Так как с булевскими значения у вас всего два варианта: true или false, а оператор switch нужен, когда у вас может быть множество вариантов. Сейчас станет понятней.

Далее мы должны написать ключевое слово case, с помощью которого мы можем перебирать варианты, чему может быть равно переменная a и какие действия предпринимать если значение переменной a сходится со значением после ключевого слова case. Затем ставим двоеточие, и пишем код, который нужно выполнить, если наш вариант совпал.

Далее пишем следующий вариант, затем следующий. В конце мы можем указать ключевое слово default, код которого выполнится, если ни один из вариантов case не будет верным.

Нажимаем Enter. И видим странную штуку. Транслятор вернул нам 0, будто ни один из вариантов не сработал. Дело в том, что транслятор по порядку начал проходить по кейсам, первый он посмотрел, переменная a не равна 1, значит пропускаем код внутри него, второй кейс тоже пропускаем и третий кейс у нас совпадает, транслятор выполняет код внутри него, но проблема в том, что транслятор, после 3 кейса, станет выполнять 4, 5, и вариант с дефолтом. Поэтому в конце концов переменная b равна 0.

Но как этого избежать? Здесь нам на помощь придет оператор break с помощью которого транслятор может выйти из условного оператора свич. Поставим данный оператор в каждом кейсе.

Такое форматирование оператора switch выглядит более читаемо. И как вы могли заметить, здесь инструкции которые находятся внутри каждого их кейсов не нужно оборачивать в фигурные скобки. Нажимаем кнопку Enter. И транслятор возвращает 3. Как мы и рассчитывали.

В коде для default оператор break можно не ставить, но он будет нужен, если вы разместите dedault между case, что тоже можно но делать так не принято.

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

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