JavaScript. Подробное руководство, 6-е издание
Шрифт:
i = j = 1;
k = 2;
if (і == j)
if (j == k)
console.log("i равно k");
else
console.log(”i не равно j”); // НЕПРАВИЛЬНО!!
В этом примере внутренняя инструкция
if
является единственной инструкцией, вложенной во внешнюю инструкцию if
. К сожалению, неясно (если исключить подсказку, которую дают отступы), к какой инструкции if
относится блок else
. А отступы в этом примере выставлены неправильно, потому что в действительности интерпретатор JavaScript интерпретирует предыдущий пример так:
if (і == j) {
if (j == k)
console. log('i равно k");
else
console.log('i не равно j"); // Вот как!
}
Согласно правилам JavaScript (и большинства других языков программирования), конструкция
else
является частью ближайшей к ней инструкции if
. Чтобы сделать этот пример менее двусмысленным и более легким для чтения, понимания, сопровождения и отладки, надо поставить фигурные скобки:
if (І == j) {
if (j == k) {
console.log('i равно k");
}
}
else
{ // Вот какая разница возникает из-за добавления фигурных скобок!
console.log('i не равно j");
}
Хотя этот стиль и не используется в данной книге, тем не менее многие программисты заключают тела инструкций
if
и else
(а также других составных инструкций, таких как циклы while
) в фигурные скобки, даже когда тело состоит только из одной инструкции. Последовательное применение этого правила поможет избежать неприятностей, подобных только что описанной. 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
пропускается целиком.
Поделиться:
Популярные книги
Мятежник
4. Стеллар
Фантастика:
боевая фантастика
7.39
рейтинг книги
Страх
2. Дети Арбата
Проза:
историческая проза
9.49
рейтинг книги
Черный Маг Императора 17
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Геном хищника. Книга пятая
5. Я - Легенда!
Фантастика:
рпг
фэнтези
попаданцы
6.00
рейтинг книги
Кодекс Охотника. Книга XIX
19. Кодекс Охотника
Фантастика:
фэнтези
5.00
рейтинг книги
Вернувшийся: Первые шаги. Том II
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Заповедник гоблинов (сборник)
Фантастика:
научная фантастика
5.00
рейтинг книги
Отверженный III: Вызов
3. Отверженный
Фантастика:
фэнтези
альтернативная история
7.73
рейтинг книги
Иоанн Антонович
10. Романовы. Династия в романах
Проза:
историческая проза
5.00
рейтинг книги
На границе империй. Том 9. Часть 3
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Наследник старого рода
1. Живой лёд
Фантастика:
фэнтези
8.19
рейтинг книги
Вернуть невесту. Ловушка для попаданки
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
8.49
рейтинг книги
На границе империй. Том 10. Часть 8
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 7
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00