Выбрать главу

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