Инструкция switch
Инструкция if создает ветвление в потоке исполнения программы. Сложное ветвление можно реализовать посредством нескольких инструкций if, как показано в предыдущем примере.
Однако это не всегда наилучшее решение, особенно если все ветви зависят от значения одной переменной. Инструкция switch работает именно в такой ситуации и делает это более эффективно, чем повторяющиеся инструкции if. За инструкцией switch следует выражение и блок кода – почти так же, как в инструкции if.
Различные места в блоке кода помечены ключевым словом case, за которым следует значение и символ двоеточия. Когда выполняется инструкция switch, она вычисляет значение выражения, а затем ищет метку case, соответствующую этому значению. Если метка найдена, исполняется блок кода, начиная с первой инструкции, следующей за меткой case. Если метка case с соответствующим значением не найдена, исполнение начинается с первой инструкции, следующей за специальной меткой default:. Если метки default: нет, блок кода пропускается целиком.
Следующая инструкция switch эквивалентна повторяющимся инструкциям if/else, показанным в предыдущем разделе:
switch(n) {
case 1: // Выполняется, если n == 1
// Исполняем блок кода 1.
break; // Здесь останавливаемся
case 2: // Выполняется, если n == 2
// Исполняем блок кода 2.
break; // Здесь останавливаемся
case 3: // Выполняется, если n == 3
// Исполняем блок кода 3.
break; // Здесь останавливаемся
default: // Если все остальное не подходит...
// Исполняем блок кода 4.
break; // Здесь останавливаемся
}
Обратите внимание на ключевое слово break в конце каждого блока case. Инструкция break приводит к передаче управления в конец инструкции switch или цикла. Конструкции case в инструкции switch задают только начальную точку исполняемого кода, но не задают никаких конечных точек. В случае отсутствия инструкций break инструкция switch начинает исполнение блока кода с метки case, соответствующей значению выражения, и продолжает исполнение до тех пор, пока не дойдет до конца блока, выполняя по очереди все оставшиеся ветви. В редких случаях это полезно для написания кода, который переходит от одной метки case к следующей, но в 99 % случаев следует аккуратно завершать каждый блок case инструкцией break.
switch (xlang) {
case "английский" : window. open ("engl .htm") ;
Break;
case "французский": window. open ("french. htm") ;
Break;
case "немецкий" : window. open ("german. htm") ;
Break;
default: alert("y нас нет документа на таком языке")
}
При использовании switch внутри функции можно помещать вместо break инструкцию return. Обе эти инструкции служат для завершения работы инструкции switch и предотвращения перехода к следующей метке case.
Ниже приводится более реальный пример использования инструкции switch; он преобразует значение в строку способом, зависящим от типа значения:
function convert(x) {
switch(typeof x) {
case 'number': // Преобразуем число в шестнадцатеричное целое
Дата добавления: 2015-08-01; просмотров: 792;