Знакомство с switch
JavaScript простым языком

Сегодня расскажу о продвинутом операторе 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 говорит JavaScript-у, что нужно выйти из конструкции switch.
Т.к., значение переменной arg равно 5, то выполнится код, который написан внутри последнего блока case, т.е. этот:
alert(‘Значение переменной arg равно 5’);Блок default, находящийся внизу конструкции switch является необязательным. Он служит для того, чтобы код внутри него выполнился в том случае, если значение переменной скормленной в switch не совпало ни с одним из значений, указанных в блоках case.
Т.е, если сейчас взять и поменять значение переменной arg, например, на 6(в примере выше), то отработает блок default.
Важные заметки:
switch очень любит точность от программиста. Поэтому, если ты пишешь так:
...
case 3:
...Это означает, что ты ожидаешь от переменной именно числового значения 3, а не строки '3'. switch просто не отработает так, как ты от него того ожидаешь, если ты не будешь думать о типах данных при сравнении.
Второй момент: кроме того, что блок default является необязательным, в конце этого блока можно не писать оператор break, т.к. этот код находится в конце конструкции switch, а значит JavaScript так или иначе выйдет из этой конструкции.
Домашнее задание
Написать конструкцию switch, которая будет проверять сколько опыта получил ваш герой в игре, в зависимости от количества убитых врагов.
Условия задачи:
За
1врага ему начисляется100очков опытаЗа
3врагов ему начисляется400очковЗа
5врагов начисляется700очковЗа
10врагов начисляется1000очков
Если же он набрал другое количество очков, то умножай количество убитых врагов на 100 очков.
Далее, запроси (с помощью функции prompt), сколько игрок убил врагов, а потом с помощью alert выведите игроку информацию о том, сколько очков опыта он заработал.
Last updated
Was this helpful?