Чтение онлайн

на главную - закладки

Жанры

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
пропускается целиком.

Поделиться:
Популярные книги

Изгой Проклятого Клана. Том 5

Пламенев Владимир
5. Изгой
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 5

Низший - Инфериор. Компиляция. Книги 1-19

Михайлов Дем Алексеевич
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
5.00
рейтинг книги
Низший - Инфериор. Компиляция. Книги 1-19

Хозяин Стужи 7

Петров Максим Николаевич
7. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Хозяин Стужи 7

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Вернувшийся: Корпорация. Том III

Vector
3. Вернувшийся
Фантастика:
космическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Корпорация. Том III

Купеческая дочь замуж не желает

Шах Ольга
Фантастика:
фэнтези
6.89
рейтинг книги
Купеческая дочь замуж не желает

Убийца

Бубела Олег Николаевич
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.26
рейтинг книги
Убийца

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X

Черный Маг Императора 12

Герда Александр
12. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 12

Геном хищника. Книга пятая

Гарцевич Евгений Александрович
5. Я - Легенда!
Фантастика:
рпг
фэнтези
попаданцы
6.00
рейтинг книги
Геном хищника. Книга пятая

Двойник Короля 2

Скабер Артемий
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля 2

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV