Шрифт:
5.4.2. Инструкция else if
Инструкция
if/else
вычисляет значение выражения и выполняет тот или иной фрагмент программного кода, а зависимости от результата. Но что если требуется выполнить один из многих фрагментов? Возможный способ сделать это состоит в применении инструкции else if
. Формально она не является самостоятельной инструкцией JavaScript; это лишь распространенный стиль программирования, заключающийся в применении повторяющихся инструкций if/else
:
if (n == 1) {
// Выполнить блок 1
}
else if (n == 2) {
// Выполнить блок 2
}
else if (n == 3) {
// Выполнить блок З
}
else {
// Если ни одна из предыдущих инструкций else не была выполнена, выполнить блок 4
}
В этом фрагменте нет ничего особенного. Это просто последовательность инструкций
if
, где каждая инструкция if
является частью конструкции else
предыдущей инструкции. Стиль else if предпочтительнее и понятнее записи в синтаксически эквивалентной форме, полностью показывающей вложенность инструкций:
if (n == 1) {
// Выполнить блок 1
}
else {
if (n == 2) {
// Выполнить блок 2
}
else {
if (n == 3) {
// Выполнить блок З
}
else {
// Если ни одна из предыдущих инструкций else // не была выполнена, выполнить блок 4
}
}
}
5.4.3. Инструкция switch
Инструкция
if
создает ветвление в потоке выполнения программы, а многопозиционное ветвление можно реализовать посредством нескольких инструкций else if
. Однако это не всегда наилучшее решение, особенно если все ветви зависят от значения одного и того же выражения. В этом случае расточительно повторно вычислять значение одного и того же выражения в нескольких инструкциях if
. Инструкция
switch
предназначена именно для таких ситуаций. За ключевым словом switch
следует выражение в скобках и блок кода в фигурных скобках:
switch(выражение) {
инструкции
}
Однако полный синтаксис инструкции
switch
более сложен, чем показано здесь. Различные места в блоке помечены ключевым словом case
, за которым следует выражение и символ двоеточия. Ключевое слово case
напоминает инструкцию с меткой за исключением того, что оно связывает инструкцию с выражением, а не с именем. Когда выполняется инструкция switch
, она вычисляет значение выражения, а затем ищет метку case
, соответствующую этому значению (соответствие определяется с помощью оператора идентичности ===
). Если метка найдена, выполняется блок кода, начиная с первой инструкции, следующей за меткой case
. Если метка case
с соответствующим значением не найдена, выполнение начинается с первой инструкции, следующей за специальной меткой default:
. Если метка default:
отсутствует, блок инструкции switch
пропускается целиком. Работу инструкции
switch
сложно объяснить на словах, гораздо понятнее выглядит объяснение на примере. Следующая инструкцияswitch
эквивалентна повторяющимся инструкциям if/else
, показанным в предыдущем разделе:
switch(n) {
case 1: // Выполняется, если п === 1
// Выполнить блок 1.
break; // Здесь остановиться
case 2: // Выполняется, если п === 2
// Выполнить блок 2.
break; // Здесь остановиться
case 3: // Выполняется, если п === 3
// Выполнить блок 3.
break; // Здесь остановиться
default: // Если все остальное не подходит...