Код, который работает, если условие2 выполнено
}else{
код, который работает, если условие2 не выполнено}}
Условие в операторе if обычно является логическим выражением. Однако это может быть также и строковое, и числовое выражение.
В случае строкового выражения условие считается выполненным, если его значением является непустая строка. Напомним, что пустая строка "" не содержит ни одного символа, в том числе и пробела (строка, содержащая хотя бы один пробел, не пуста).
В случае числового выражения условие считается выполненным, если его значением является число, отличное от нуля. Во многих случаях эта многозначность типа условия оказывается очень удобной.
Допустим, что переменная х содержит данные, которые ввел пользователь, и нам требуется проверить, что он действительно что-то ввел. В следующем примере мы проверяем, что значение переменной х не пусто (не 0, не пустая строка "" или NaN, не null и не undefined). Если х пусто, то выводится соответствующее сообщение:
if (!х) {// Если переменная username равна null, undefined, 0, "" или NaN, она
// преобразуется в false, и эта инструкция присвоит переменной новое
//значение.
alert('Bы ничего не ввели")
}
Заметим, что поскольку в этом примере блок кода содержит всего лишь одно выражение, фигурные скобки можно опустить, и всю конструкцию оператора условного перехода можно записать в одной строке:
if (!x) alert('Bы ничего не ввели")
Можно было то же самое записать иначе:
if (x == null) // Если переменная x равна null или undefined,
alert('Bы ничего не ввели")
x = "Вася"; // определяем ее
Как уже упоминалось, можно использовать сложные условия. Поэтому инструкция if может выглядеть так:
if ((address == null) || (address == "")) {
address = "undefined";
alert("Пожалуйста, укажите почтовый адрес.");
}
Отступы, присутствующие в этих примерах, не обязательны. Дополнительные пробелы и табуляции игнорируются в JavaScript. Оформление текста с использованием символов перевода строки и отступов облегчает чтение и понимание кода.
Многие программисты заключают тело инструкций if и else (а также других составных инструкций, таких как циклы while) в фигурные скобки, даже когда тело состоит только из одной инструкции. Последовательное применение этого правила поможет избежать многих ошибок и неприятностей.
Инструкция else if
Мы видели, что инструкция if/else используется для проверки условия и выполнения одного из двух фрагментов кода в зависимости от результата проверки. Но что если требуется выполнить один из многих фрагментов кода? Возможный способ сделать это состоит в применении инструкции else if. Формально это не JavaScript-инструкция, а лишь распространенный стиль программирования, состоящий в применении повторяющихся инструкций if/else:
if (n == 1) {
// Исполняем блок кода 1
}
else if (n == 2) {
// Исполняем блок кода 2
}
else if (n == 3) {
// Исполняем блок кода 3
}
else {
// Если все остальные условия else не выполняются, исполняем блок 4
}
В этом фрагменте нет ничего особенного. Это просто последовательность инструкций if, где каждая инструкция if является частью конструкции else предыдущей инструкции. Стиль else if предпочтительнее и понятнее записи в синтаксически эквивалентной форме, полностью показывающей вложенность инструкций:
if (n == 1) {
// Исполняем блок кода 1
}
else { if (n == 2) {
// Исполняем блок кода 2
}
else { if (n == 3) {
// Исполняем блок кода 3
}
else {
// Если все остальные условия else не выполняются, исполняем блок кода 4
}
}
}
Инструкция 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': // Преобразуем число в шестнадцатеричное целое
Дата добавления: 2016-01-09; просмотров: 856;