Книга: JavaScript. Подробное руководство, 6-е издание

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

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

Оглавление книги


Генерация: 0.094. Запросов К БД/Cache: 0 / 2
поделиться
Вверх Вниз