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

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

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

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

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

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

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

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

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

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

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

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

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

давайте теперь посмотрим чему равняется переменная 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, и вариант с дефолтом.

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

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

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

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

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