Раздел: Сайтостроение / JavaScript /
Оператор выбора в JavaScript
Как всегда напоминаю, что полный обучающий курс по JavaScript можно найти здесь:
>>> JavaScript, jQuery и Ajax с нуля до гуру >>>
Ранее я рассказывал об условном операторе. С помощью этого оператора можно создавать довольно сложные ветвления, то есть, в зависимости от, например, значения проверяемой переменной, выполнять тот или иной участок кода. Например:
var x = 1;
if (x == 1)
{
document.write("x = 1 <br>");
}
else
{
if (x == 2)
{
document.write("x = 2 <br>");
}
else
{
if (x == 3)
{
document.write("x = 3 <br>");
}
else
{
document.write("x = " + x + "<br>");
} //if (x == 3)
} //if (x == 2)
} //if (x == 1)
Это вполне допустимая с точки зрения синтаксиса конструкция. Этот код будет правильно работать - можете сами убедиться. И есть только одно “но” - такой исходный код слишком сложен и часто малопонятен. По этой причине совершить ошибку в таком коде можно довольно легко. Хорошо, что есть такая штука, как...
Оператор switch в JavaScript
Как вы понимаете, использовать множество операторов if-else таким
образом, как это показано выше, мягко говоря, неудобно. Поэтому почти во всех
языках программирования имеется так называемый оператор выбора.
Оператор switch (иногда это называют “инструкция switch”)
выполняет выбор того или иного участка кода для исполнения, в зависимости от
значения проверяемой переменной.
Тот же самый код, который мы мучительно писали выше, с использованием оператора выбора будет выглядеть так:
var x = 1;
switch(x)
{
case 1 :
document.write("x = 1 <br>");
break;
case 2 :
document.write("x = 2 <br>");
break;
case 3 :
document.write("x = 3 <br>");
break;
default :
document.write("x = " + x + "<br>");
break;
}
Оператор switch(x) проверяет значение переменной x,
и сравнивает его со значениями, указанными после слов case.
Если он находит совпадение, то выполняет исходный код, который находится
после case. Если совпадения не найдены, то выполняется код по умолчанию,
который находится после слова default.
Слово default не является обязательным. Если его нет, то в случае отсутствия совпадений просто ничего не происходит, и сценарий выполняется дальше.
ВАЖНО!
Обратите внимание на ключевое слово break. Если его не использовать,
то после первого нахождения совпадения все последующие инструкции будут выполнены, а не только тот блок, где найдено совпадение. Например, вот такой сценарий:
var x = 2;
//Использование switch без break
switch(x)
{
case 1 :
document.write("x = 1 <br>");
case 2 :
document.write("x = 2 <br>");
case 3 :
document.write("x = 3 <br>");
default :
document.write("x = " + x + "<br>");
}
выведет на экран:
x = 2 x = 3 x = 2
ПРИМЕЧАНИЕ
Меня, как человека, начинавшего изучение программирования с Паскаля,
такое поведение оператора выбора всегда сильно бесило. Но JavaScript создан
на основе С/С++, поэтому вобрал в себя почти все их заморочки.
Использование switch в функциях
Как я уже сказал выше, ключевое слово break надо использовать в
конце каждого блока case. Это слово служит в данном случае для
выхода из блока switch, то есть для завершения работы оператора выбора.
Если же вы используете switch в функции, то можно слово break
не применять, а обойтись только инструкцией return. Пример:
function TestSwitch(op, x, y)
{
switch(op)
{
case '+' :
return(x + y);
case '-' :
return(x - y);
case '*' :
return(x * y);
default :
return("Неизвестная операция");
}
}
document.write(TestSwitch('+', 1, 2));
Этот пример выведет на экран число 3.
Как видите, язык JavaScript довольно гибкий. Одна и та же функция может возвращать как числовое значение, так и строковое, в зависимости от результата. Это, конечно, очень удобно, хотя и может привести к ошибкам из-за невнимательности программиста.
ПРИМЕЧАНИЕ
Слово default в наших примерах указывается в конце блока switch.
Это соответствует логике, однако это не обязательно делать так, потому что default
в JavaScript можно располагать в любом месте блока switch.
Эта статья - лишь капля в море знаний о JavaScript. Если хотите испить эту чашу до дна, то изучить этот язык, а также jQuery и Ajax можно здесь:
>>> JavaScript, jQuery и Ajax с нуля до гуру >>>