В JavaScript имеется обычный оператор условия
, с которым я был знаком уже давно. Но вот недавно познакомился с его разновидностью - тернарным оператором 1
if-else
. Да, именно так - оператор вопросительный знак.1
?
На первый взгляд, такой тернарный оператор выглядит запутанно и совершенно непонятно. Но стоит вникнуть в суть, как все становится просто.
Сначала - что значит тернарный оператор? В JavaScript существуют унарные операторы, бинарные операторы и вот теперь, оказывается, есть тернарный оператор. Опять-таки, все просто. Унарный оператор оперирует с одним операндом, бинарный оператор - с двумя операндами, тернарный оператор - с тремя операндами.
Синтаксис тернарного оператора
таков:1
?
Читается такой оператор условия следующим образом: если выполняется условие
, то переменной 1
(условие)
присвоить значение 1
result
; если условие 1
alpha
не выполняется, то переменной 1
(условие)
присвоить значение 1
result
.1
beta
Тернарный оператор условия очень похож на обычный оператор условия
. Можно сказать, что это сокращенная версия обычного оператора условия 1
if-else
.1
if-else
Давайте сравним оба условия:
- оператор условия
:1
if-else
- тернарный оператор условия
:1
?
Очень похоже, не правда ли? Здесь есть один важный момент - в данном случае у обоих операторов есть одна общая черта. И в первом, и во-втором случае переменной
присваивается значение в зависимости от выполнения условия.1
result
А вот такой вариант уже будет непохож на предыдущий:
Обратите внимание, что в этом условии результат присваивается разным переменным. В данном случае тенарный оператор условия
уже не подойдет; он не применим в данном случае.1
?
Отсюда вывод: тернарный оператор применим для случая, когда одной переменной присваивается разный результат в зависимости от условия.
Условие на тернарном операторе можно сделать разветвленными и тогда вид такого оператора дейсвительно будет выглядеть достаточно запутанным:
Хотя тут все просто на самом деле, если разобраться. Если прочитать это условие, то оно будет выглядеть таким образом.
- Переменной
присвоить значение, полученное от пользователя.1
login
- Если значение переменной
равно1
login
, то переменной1
black
присвоить значение1
pass
.1
Welcome!
- Иначе, если значение переменной
равно1
login
, то переменной1
white
присвоить значение1
pass
.1
Good bay!
- Иначе, если значение переменной
равно1
login
, то переменной1
green
присвоить значение1
pass
.1
See you next week!
- Иначе переменной
присвоить значение1
pass
.1
I don\'t know you!
Приведу еще один пример нескольких операторов
, нагло скопированный с ресурса learn.javascript.ru вместе с описанием его работы (все в угоду доходчивости изложения материала):1
?
Поначалу может быть сложно понять, что происходит. Однако, внимательно приглядевшись, мы замечаем, что это обычная последовательная проверка!
Вопросительный знак проверяет сначала
, если верно — возвращает ‘Здравствуй, малыш!’, если нет — идет за двоеточие и проверяет 1
age < 3
. Если это верно — возвращает ‘Привет!’, иначе проверка 1
age < 18
и ‘Здравствуйте!’… И наконец, если ничего из этого не верно, то ‘Какой необычный возраст!’.1
age < 100
То же самое через
:1
if-else
Вот так работает тернарный оператор
в JavaScript. Ресурс learn.javascript.ru советует использовать тернарный оператор 1
?
по назначению и не заменять им обычный оператор условия 1
?
.1
if-else
Данный материал основан на ресурсе learn.javascript.ru и не претендует на оригинальность.