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

Аналогично:

<b>// Если переменная username равна null, undefined, 0, &quot;&quot; или NaN,</b>

<b>// присвоить ей новое значение, </b>

<b>if (!username) username = &quot;John Doe&quot;;</b>

Обратите внимание, что скобки вокруг условного выражения являются обязательной частью синтаксиса инструкции

<b>if</b>
.

Синтаксис языка JavaScript позволяет вставить только одну инструкцию после инструкции

<b>if</b>
и выражения в круглых скобках, однако одиночную инструкцию всегда можно заменить блоком инструкций. Поэтому инструкция
<b>if</b>
может выглядеть так:

<b>if (!address) { </b>

<b>  address = &quot;&quot;;</b>

<b>  message = &quot;Пожалуйста, укажите почтовый адрес.&quot;;</b>

<b>}</b>

Вторая форма инструкции

<b>if</b>
вводит конструкцию
<b>else</b>
, выполняемую в тех случаях, когда выражение возвращает ложное значение. Ее синтаксис:

<b>if (выражение) </b>

<b>  инструкция 1</b>

<b>else</b>

<b>  инструкция2</b>

Эта форма инструкции выполняет

<b>инструкцию1</b>
, если выражение возвращает истинное значение, и
<b>инструкцию2</b>
, если выражение возвращает ложное значение. Например:

<b>if (п == 1)</b>

<b>  console.log(&quot;Получено 1 новое сообщение.&quot;);</b>

<b>else</b>

<b>  console.log(&quot;Получено &quot; + n + &quot; новых сообщений.&quot;);</b>

При наличии вложенных инструкций

<b>if</b>
с блоками
<b>else</b>
требуется некоторая осторожность - необходимо гарантировать, что
<b>else</b>
относится к соответствующей ей инструкции
<b>if</b>
. Взгляните на следующие строки:

<b>i = j = 1;</b>

<b>k = 2; </b>

<b>if (і == j) </b>

<b>  if (j == k)</b>

<b>    console.log(&quot;i равно k&quot;);</b>

<b>else</b>

<b>  console.log(”i не равно j”); // НЕПРАВИЛЬНО!!</b>

В этом примере внутренняя инструкция

<b>if</b>
является единственной инструкцией, вложенной во внешнюю инструкцию
<b>if</b>
. К сожалению, неясно (если исключить подсказку, которую дают отступы), к какой инструкции
<b>if</b>
относится блок
<b>else</b>
. А отступы в этом примере выставлены неправильно, потому что в действительности интерпретатор JavaScript интерпретирует предыдущий пример так:

<b>if (і == j) {</b>

<b>  if (j == k)</b>

<b>    console. log('i равно k&quot;);</b>

<b>  else</b>

<b>    console.log('i не равно j&quot;); // Вот как!</b>

<b>}</b>

Согласно правилам JavaScript (и большинства других языков программирования), конструкция

<b>else</b>
является частью ближайшей к ней инструкции
<b>if</b>
. Чтобы сделать этот пример менее двусмысленным и более легким для чтения, понимания, сопровождения и отладки, надо поставить фигурные скобки:

<b>if (І == j) {</b>

<b>  if (j == k) {</b>

<b>    console.log('i равно k&quot;);</b>

<b>  }</b>

<b>}</b>

<b>else </b>

<b>{ // Вот какая разница возникает из-за добавления фигурных скобок!</b>

<b>  console.log('i не равно j&quot;);</b>

<b>}</b>

Хотя этот стиль и не используется в данной книге, тем не менее многие программисты заключают тела инструкций

<b>if</b>
и
<b>else</b>
(а также других составных инструкций, таких как циклы
<b>while</b>
) в фигурные скобки, даже когда тело состоит только из одной инструкции. Последовательное применение этого правила поможет избежать неприятностей, подобных только что описанной.

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

Инструкция

<b>if/else</b>
вычисляет значение выражения и выполняет тот или иной фрагмент программного кода, а зависимости от результата. Но что если требуется выполнить один из многих фрагментов? Возможный способ сделать это состоит в применении инструкции
<b>else if</b>
. Формально она не является самостоятельной инструкцией JavaScript; это лишь распространенный стиль программирования, заключающийся в применении повторяющихся инструкций
<b>if/else</b>
:

<b>if (n == 1) {</b>

<b>  // Выполнить блок 1</b>

<b>}</b>