Цикл статей «Учебник Javascript».
Следующая статья — «Функции в Javascript».
Предыдущая статья — «Циклы while, for в Javascript».
Рассмотрим код:
1 2 3 4 5 6 7 8 9 10 11 12 |
var x = 3; if (x == 1) { alert('vasya'); } else if (x == 2) { alert('petya'); } else if (x == 3) { alert('sidor'); } else if (x == 4) { alert('vova'); } else { alert('other'); } |
Эту конструкцию можно упростить с помощью switch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var x = 3; switch (x) { case 1: alert('vasya'); break; case 2: alert('petya'); break; case 3: alert('sidor'); break; case 4: alert('vova'); break; default: alert('other'); } |
Эти два куска кода делают одно и то же. Но рекомендуется использовать второй вариант. Считается, что он нагляднее выглядит. В данном случае оператор switch будет сравнивать последовательно своё выражение x с каждым из своих case. Остановится на том, когда в case значение будет равно x. Это будет case 3. Он выполнит его. Обязательно ставить break, так иначе case после выполнения своих операторов будет выполнять операторы из следующего case. Блок default будет выполнен в том случае, если ни один из case не совпал. Если не ставить break-и, то будут сообщения: «sidor», «vova», «other».
В case может быть не только константа, но и любое выражение включая вызов функции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var x = 3; switch (x) { case 1: alert('vasya'); break; case 2: alert('petya'); break; case 2+1: alert('sidor'); break; case 4: alert('vova'); break; default: alert('other'); break; } |
Несколько идущих подряд case можно группировать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
var x = 3; switch (x) { case 1: alert('vasya'); break; case 2: alert('petya'); break; case 3: case 4: alert('vova'); // Сработает это. break; default: alert('other'); break; } |
Помните, оператор switch-case не делает преобразования типов. Он использует строго равенство ===.
Цикл статей «Учебник Javascript».
Следующая статья — «Функции в Javascript».
Предыдущая статья — «Циклы while, for в Javascript».