JavaScript для тупых
  • JavaScript для тупых
  • Главная
  • Об учебнике
  • Формат обучения
  • Ввод в JavaScript. Что это? И для чего нужен?
  • Братки JavaScript-а
  • Переменные в JavaScript
  • Переменные. const, let, var
  • Преобразование типов
  • Операторы сравнения
  • Типы данных. Number
  • Типы данных. String
  • Типы данных. Boolean
  • Типы данных. null и undefined
  • Типы данных. Оператор typeof
  • Условные операторы: if и ?
  • Циклы: while, for
  • Операторы
  • Логические операторы
  • Знакомство с switch
  • Функции
  • Функции. Возврат значения
  • Стрелочные функции
  • Знакомство с DOM
  • DOM-элементы. Получение объектов
  • DOM-элементы. События. Ввод.
  • DOM-элементы. События. Часть 2
  • Объекты. Начало игры
  • Массивы
  • Методы массивов: splice, slice, concat
  • Методы массивов: find, findIndex, filter
  • Методы массивов: map, sort
  • Методы массивов: reverse, split, join
  • Методы массивов: indexOf, lastIndexOf, includes
  • Методы массивов: reduce, spread
  • Методы массивов: Array.isArray, some, every
  • Методы массивов: flat, fill
  • Планирование вызова функции: setTimeout
  • Планирование вызова функции: setInterval
  • Объекты. Свойства.
  • Объекты. Методы
  • this, call, apply, bind
  • Замыкания
  • Прототипы
  • Promises (Обещания)
Powered by GitBook
On this page

Was this helpful?

Знакомство с switch

JavaScript простым языком

PreviousЛогические операторыNextФункции

Last updated 4 years ago

Was this helpful?

Сегодня расскажу о продвинутом операторе 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 выведите игроку информацию о том, сколько очков опыта он заработал.

Разберем код ().

живой пример
Generic badge