5.4.1. Инструкция if

We use cookies. Read the Privacy and Cookie Policy

Инструкция 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) в фигурные скобки, даже когда тело состоит только из одной инструкции. Последовательное применение этого правила поможет избежать неприятностей, подобных только что описанной.