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

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

Жанры

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

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

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4