Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание
- Название:JavaScript. Подробное руководство, 6-е издание
- Автор:
- Жанр:
- Издательство:Символ-Плюс
- Год:2012
- Город:СПб
- ISBN:978-5-93286-215-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Дэвид Флэнаган - JavaScript. Подробное руководство, 6-е издание краткое содержание
Эта книга - одновременно и руководство программиста, и полноценный справочник по базовому языку JavaScript и клиентским прикладным интерфейсам, предоставляемым веб-броузерами.
JavaScript. Подробное руководство, 6-е издание - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
В подразделах ниже описывается основная условная инструкция языка JavaScript - инструкция if/else
, а также более сложная инструкция switch
, позволяющая создавать множество ответвлений.
5.4.1. Инструкция if
Инструкция if
- это базовая управляющая инструкция, позволяющая интерпретатору JavaScript принимать решения или, точнее, выполнять инструкции в зависимости от условий. Инструкция имеет две формы. Первая:
if ( выражение ) инструкция
В этой форме сначала вычисляется выражение. Если полученный результат является истинным, то инструкция выполняется. Если выражение возвращает ложное значение, то инструкция не выполняется. (Определения истинных и ложных значений приводятся в разделе 3.3.) Например:
if (username == null) // Если переменная username равна null или undefined,
username = "John Doe"; // определить ее
Аналогично:
// Если переменная username равна null, undefined, 0, "" или NaN,
// присвоить ей новое значение,
if (!username) username = "John Doe";
Обратите внимание, что скобки вокруг условного выражения являются обязательной частью синтаксиса инструкции if
.
Синтаксис языка JavaScript позволяет вставить только одну инструкцию после инструкции if
и выражения в круглых скобках, однако одиночную инструкцию всегда можно заменить блоком инструкций. Поэтому инструкция if
может выглядеть так:
if (!address) {
address = "";
message = "Пожалуйста, укажите почтовый адрес.";
}
Вторая форма инструкции if
вводит конструкцию else
, выполняемую в тех случаях, когда выражение возвращает ложное значение. Ее синтаксис:
if (выражение)
инструкция 1
else
инструкция2
Эта форма инструкции выполняет инструкцию1
, если выражение возвращает истинное значение, и инструкцию2
, если выражение возвращает ложное значение. Например:
if (п == 1)
console.log("Получено 1 новое сообщение.");
else
console.log("Получено " + n + " новых сообщений.");
При наличии вложенных инструкций if
с блоками else
требуется некоторая осторожность - необходимо гарантировать, что else
относится к соответствующей ей инструкции if
. Взгляните на следующие строки:
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
.
Интервал:
Закладка: