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