Вы можете использовать несколько команд if ... else ... if, как и в предыдущей главе, для выполнения многострочной ветви. Однако это не всегда лучшее решение, особенно когда все ветви зависят от значения одной переменной.
Начиная с JavaScript 1.2, вы можете использовать оператор switch, который обрабатывает именно эту ситуацию, и делает это более эффективно, чем if ... else if.
Блок-схема
В следующей блок-схеме объясняется работа оператора switch-case.
Синтаксис
Задача оператора switch состоит в том, чтобы дать выражение для оценки и выполнить несколько разных операторов на основе значения выражения. Интерпретатор проверяет каждый случай на значение выражения до тех пор, пока не будет найдено совпадение. Если ничего не найдено, будет использоваться условие по умолчанию.
switch (expression)
{
case condition 1: statement(s)
break;
case condition 2: statement(s)
break;
...
case condition n: statement(s)
break;
default: statement(s)
}
Операторы break указывают конец конкретного случая. Если они были опущены, интерпретатор будет продолжать выполнять каждое утверждение в каждом из следующих случаев.
Попробуйте следующий пример, чтобы реализовать оператор switch-case.
<html>
<body>
<script type="text/javascript">
<!--
var grade='A';
document.write("Entering switch block<br />");
switch (grade)
{
case 'A': document.write("Good job<br />");
break;
case 'B': document.write("Pretty good<br />");
break;
case 'C': document.write("Passed<br />");
break;
case 'D': document.write("Not so good<br />");
break;
case 'F': document.write("Failed<br />");
break;
default: document.write("Unknown grade<br />")
}
document.write("Exiting switch block");
//-->
</script>
</body>
</html>
Entering switch blockGood jobExiting switch blockОператоры break играют важную роль в операторах case-case. Попробуйте использовать следующий код, который использует оператор switch-case без инструкции break.
<html>
<body>
<script type="text/javascript">
<!--
var grade='A';
document.write("Entering switch block<br />");
switch (grade)
{
case 'A': document.write("Good job<br />");
case 'B': document.write("Pretty good<br />");
case 'C': document.write("Passed<br />");
case 'D': document.write("Not so good<br />");
case 'F': document.write("Failed<br />");
default: document.write("Unknown grade<br />")
}
document.write("Exiting switch block");
//-->
</script>
</body>
</html>
Entering switch blockGood jobPretty goodPassedNot so goodFailedUnknown gradeExiting switch block