JavaScript. Подробное руководство, 6-е издание
Часть 49 из 535 Информация о книге
Аналогично:
<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>. А отступы в этом примере выставлены неправильно, потому что в действительности интерпретатор JavaScript интерпретирует предыдущий пример так:<b>else</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>}</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>. Формально она не является самостоятельной инструкцией JavaScript; это лишь распространенный стиль программирования, заключающийся в применении повторяющихся инструкций<b>else if</b>:<b>if/else</b><b>if (n == 1) {</b><b> // Выполнить блок 1</b><b>}</b>