Знакомство с switch
Всем привет! Сегодня расскажу о продвинутом операторе if
, а именно о конструкции switch
.
if
и switch
очень близки по своей идее, однако, в множестве случаев в споре кто лучше тот или другой, победителем выйдет, именно, switch
.
Теперь поподробнее об этой конструкции. switch
, фактически заменяет в коде несколько конструкций if
, что, порой, позволяет избегать лишних проверок(соответственно, сокращать код).
Вся конструкция switch
выглядит следующим образом:
switch(arg) { case 1: //действия break; case 2: //действия break; default: //действия }
Теперь сразу же разберем на примере:
let arg = 5; switch(arg) { case 1: alert(‘Значение переменной arg равно 1’); break; case 3: alert(‘Значение переменной arg равно 3’); break; case 5: alert(‘Значение переменной arg равно 5’); break; default: alert(‘Значение переменной arg равно: ’ + arg); }
Разберем, что тут происходит (живой пример).
Мы определили переменную arg
и записали в нее значение 5.
Затем, эту переменную arg
мы как бы “скармливаем” конструкции switch
.
Эта конструкция берет значение переменной, которую ей "скормили", и проверяет совпадает ли это значение с одним из значений указанных в блоках case. Если значение совпадает с каким-либо значением указанным после ключевого слова case, то выполнятся все действия, которые указаны внутри этого блока case
до оператора break
. Опертор break
говорит JS-у, что нужно выйти из конструкции switch
.
Т.к., значение переменной arg
равно 5, то выполнится код, который написан внутри последнего блока case
, т.е. этот:
alert(‘Значение переменной arg равно 5’);
Блок default
, который находится внизу конструкции switch
является необязательным. Служит этот блок для того, чтобы код внутри него выполнился в том случае, если значение переменной скормленной в switch
не совпало ни с одним значением указанных в блоках case
.
Т.е, если сейчас взять и поменять значение переменной arg
, например, на 6(в примере выше), то отработает блок default
.
Важные заметки:
switch
очень любит точность от программиста. Поэтому, если ты пишешь так:
... case 3: ...
то это означает, что ты ожидаешь от переменной именно числового значения 3, а не строки '3'. switch
просто не будет отрабатывать так, как ты ожидаешь, если ты забьешь на типы данных при сравнении.
Второй момент: кроме того, что блок default
является необязательным, в конце этого блока можно не писать оператор break
, т.к. этот код находится в конце конструкции switch
, а значит JS так или-иначе выйдет из этой конструкции.
Домашняя работа
Написать конструкцию switch
, которая будет проверять сколько опыта получил ваш герой в игре, в зависимости от количества убитых врагов.
Условия задачи:
- За 1 врага ему начисляется 100 очков опыта
- За 3 врагов ему начисляется 400 очков
- За 5 врагов начисляется 700 очков
- За 10 врагов начисляется 1000 очков
Если же он набрал другое количество очков, то умножай количество убитых врагов на 100 очков.
Запроси(с помощью prompt
), сколько игрок убил врагов, а потом с помощью alert
выведите игроку информацию о том, сколько очков опыта он заработал.