Знакомство с 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