Иногда, в зависимости от условия, нужно выполнить различные действия. Для этого используется оператор if.
Например:
Оператор if («если») получает условие, в примере выше это year != 2011. Он вычисляет его, и если результат – true, то выполняет команду.
Если нужно выполнить более одной команды – они оформляются блоком кода в фигурных скобках:
Рекомендуется использовать фигурные скобки всегда, даже когда команда одна.
Это улучшает читаемость кода.
Оператор if (...) вычисляет и преобразует выражение в скобках к логическому типу.
В логическом контексте:
0, пустая строка "", null и undefined, а также NaN являются false,true.Например, такое условие никогда не выполнится:
…А такое – выполнится всегда:
Можно и просто передать уже готовое логическое значение, к примеру, заранее вычисленное в переменной:
Необязательный блок else («иначе») выполняется, если условие неверно:
Бывает нужно проверить несколько вариантов условия. Для этого используется блок else if .... Например:
В примере выше JavaScript сначала проверит первое условие, если оно ложно – перейдет ко второму – и так далее, до последнего else.
Иногда нужно в зависимости от условия присвоить переменную. Например:
Оператор вопросительный знак '?' позволяет делать это короче и проще.
Он состоит из трех частей:
Проверяется условие, затем если оно верно – возвращается значение1, если неверно – значение2, например:
Оператор '?' выполняется позже большинства других, в частности – позже сравнений, поэтому скобки можно не ставить:
…Но когда скобки есть – код лучше читается. Так что рекомендуется их писать.
В данном случае можно было бы обойтись и без оператора '?', т.к. сравнение само по себе уже возвращает true/false:
Вопросительный знак – единственный оператор, у которого есть аж три аргумента, в то время как у обычных операторов их один-два. Поэтому его называют «тернарный оператор».
Последовательность операторов '?' позволяет вернуть значение в зависимости не от одного условия, а от нескольких.
Например:
Поначалу может быть сложно понять, что происходит. Однако, внимательно приглядевшись, мы замечаем, что это обычная последовательная проверка!
Вопросительный знак проверяет сначала age < 3, если верно – возвращает 'Здравствуй, малыш!', если нет – идет за двоеточие и проверяет age < 18. Если это верно – возвращает 'Привет!', иначе проверка age < 100 и 'Здравствуйте!'… И наконец, если ничего из этого не верно, то 'Какой необычный возраст!'.
То же самое через if..else:
Иногда оператор вопросительный знак '?' используют как замену if:
Работает это так: в зависимости от условия, будет выполнена либо первая, либо вторая часть после '?'.
Результат выполнения не присваивается в переменную, так что пропадёт (впрочем, alert ничего не возвращает).
Рекомендуется не использовать вопросительный знак таким образом.
Несмотря на то, что с виду такая запись короче if, она является существенно менее читаемой.
Вот, для сравнения, то же самое с if:
При чтении кода глаз идёт вертикально и конструкции, занимающие несколько строк, с понятной вложенностью, воспринимаются гораздо легче. Возможно, вы и сами почувствуете, пробежавшись глазами, что синтаксис с if более прост и очевиден чем с оператором '?'.
Смысл оператора '?' – вернуть то или иное значение, в зависимости от условия. Пожалуйста, используйте его по назначению, а для выполнения разных веток кода есть if.