Найти в Дзене

switch в JavaScript

Инструкция switch…case в JavaScript работает также, как и в С++ или Java. Однако есть особенности, которые, с одной стороны, дают больше возможностей, но с другой - могут принести в ваш код труднонаходимые ошибки.

Сильно расписывать всё не буду, просто небольшой пример для наглядности:

switch(x)
{
case 0 : cout << 0 << endl; break;
case 1 : cout << 1 << endl; break;
case 2 : cout << 2 << endl; break;
default: cout << '?' << endl; break;
}

Этот пример будет одинаково работать как в С++, так и в JavaScript (ну за исключением, разумеется, использования cout). А вот дальше для программистов на С++ начинаются неожиданности. Например, если в С++ (и большинстве других языков) в case вы более одного раза попытаетесь проверить одно и то же значение, то компилятор выдаст ошибку:

А вот в JavaScript это прокатывает - ошибки не будет. Просто будет выполнен первый case, где будет найдено совпадение.

Более того, в большинстве языков программирования в качестве проверяемых значений вы можете использовать только порядковые константы (иногда выражения с константами). JavaScript это тоже пофигу - вы можете использовать в case переменные и вообще любые выражения!

И вот эта вся ахинея будет работать в JavaScript:

-2

Но и это ещё не всё! Здесь вы в качестве проверяемых значений можете использовать строки:

-3

Так что пользуйтесь. Но надо помнить, что эти вольности неизбежно приведут к труднонаходимым ошибкам в программе. Поэтому в инструкции switch настоятельно советуют использовать только константы, а всё остальное лишь в случае крайней необходимости.

Ну и в конце добавлю, что совпадение проверяется в соответствии с оператором идентичности (===), а не равенства (==) - подробности см. здесь. То есть case сработает только в том случае, если выражения совпадают без преобразования типов. Поэтому в case значения '1' и 1 будут считаться разными значениями.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.