Иногда нам нужно выполнить различные действия в зависимости от условий.
Для этого мы можем использовать инструкцию if
и условный оператор ?
, который также называют оператором «вопросительный знак».
Инструкция «if»
Инструкция if(...)
вычисляет условие в скобках и, если результат true
, то выполняет блок кода.
Например:
let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', '');
if (year == 2015) alert( 'Вы правы!' );
В примере выше, условие – это простая проверка на равенство (year == 2015
), но оно может быть и гораздо более сложным.
Если мы хотим выполнить более одной инструкции, то нужно заключить блок кода в фигурные скобки:
if (year == 2015) {
alert( "Правильно!" );
alert( "Вы такой умный!" );
}
Мы рекомендуем использовать фигурные скобки {}
всегда, когда вы используете инструкцию if
, даже если выполняется только одна команда. Это улучшает читабельность кода.
Преобразование к логическому типу
Инструкция if (…)
вычисляет выражение в скобках и преобразует результат к логическому типу.
Давайте вспомним правила преобразования типов из главы Преобразование типов:
- Число
0
, пустая строка""
,null
,undefined
иNaN
становятсяfalse
. Из-за этого их называют «ложными» («falsy») значениями. - Остальные значения становятся
true
, поэтому их называют «правдивыми» («truthy»).
Таким образом, код при таком условии никогда не выполнится:
if (0) { // 0 is falsy
...
}
…а при таком – выполнится всегда:
if (1) { // 1 is truthy
...
}
Мы также можем передать заранее вычисленное в переменной логическое значение в if
, например так:
let condition = (year == 2015); // преобразуется к true или false
if (condition) {
...
}
Блок «else»
Инструкция if
может содержать необязательный блок «else» («иначе»). Он выполняется, когда условие ложно.
Например:
let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', '');
if (year == 2015) {
alert( 'Да вы знаток!' );
} else {
alert( 'А вот и неправильно!' ); // любое значение, кроме 2015
}
Несколько условий: «else if»
Иногда, нужно проверить несколько вариантов условия. Для этого используется блок else if
.
Например:
let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', '');
if (year < 2015) {
alert( 'Это слишком рано...' );
} else if (year > 2015) {
alert( 'Это поздновато' );
} else {
alert( 'Верно!' );
}
В приведённом выше коде JavaScript сначала проверит year < 2015
. Если это неверно, он переходит к следующему условию year > 2015
. Если оно тоже ложно, тогда сработает последний alert
.
Блоков else if
может быть и больше. Присутствие блока else
не является обязательным.