Аналогично:
<b>// Если переменная username равна null, undefined, 0, "" или NaN,</b>
<b>// присвоить ей новое значение, </b>
<b>if (!username) username = "John Doe";</b>
Обратите внимание, что скобки вокруг условного выражения являются обязательной частью синтаксиса инструкции
<b>if</b>
.
Синтаксис языка JavaScript позволяет вставить только одну инструкцию после инструкции
<b>if</b>
и выражения в круглых скобках, однако одиночную инструкцию всегда можно заменить блоком инструкций. Поэтому инструкция
<b>if</b>
может выглядеть так:
<b>if (!address) { </b>
<b> address = "";</b>
<b> message = "Пожалуйста, укажите почтовый адрес.";</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("Получено 1 новое сообщение.");</b>
<b>else</b>
<b> console.log("Получено " + n + " новых сообщений.");</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("i равно k");</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");</b>
<b> else</b>
<b> console.log('i не равно j"); // Вот как!</b>
<b>}</b>
Согласно правилам JavaScript (и большинства других языков программирования), конструкция
<b>else</b>
является частью ближайшей к ней инструкции
<b>if</b>
. Чтобы сделать этот пример менее двусмысленным и более легким для чтения, понимания, сопровождения и отладки, надо поставить фигурные скобки:
<b>if (І == j) {</b>
<b> if (j == k) {</b>
<b> console.log('i равно k");</b>
<b> }</b>
<b>}</b>
<b>else </b>
<b>{ // Вот какая разница возникает из-за добавления фигурных скобок!</b>
<b> console.log('i не равно j");</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>