Синтаксис языка 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