Тернарный, или условный оператор, в JavaScript является единственным оператором, который принимает три операнда. Он служит своеобразной альтернативой условному оператору if
.
Рассмотрим следующую функцию:
function findBiggerNumber(num1, num2) {
if (num1 > num2) {
return num1;
}
}
let biggerNumber = findBiggerNumber(someNumber1, someNumber2);
Нашли ошибку? Если нет, посмотрите еще раз. Замечание: я спешил закончить проект, устал и, видимо, поэтому был невнимателен.
Функция выше должна «найти наибольшее значение». Она вернет num1
, если num1
больше num2
. Но я забыл про num2
и возможность того, что условие может не выполниться. Для опытного разработчика такая ошибка выглядит странно, но в условиях усталости и спешки её легко совершить. JavaScript не предъявляет требований к возвращаемым значениям функций и не предупреждает об ошибке в таких случаях.
Правильное решение выглядит так:
function findBiggerNumber(num1, num2) {
if (num1 > num2) {
return num1;
} else {
return num2;
}
}
let biggerNumber = findBiggerNumber(someNumber1, someNumber2);
Примечание: если переменные равны, функция вернет num2
.
Теперь функция работает правильно, но это решение кажется излишне сложным для такой простой задачи. Можно сократить код, сделав его менее читаемым, но это неправильный путь. Вот тут и приходит на помощь тернарный оператор.
Что такое тернарный оператор?
Тернарный означает «три». Действительно, тернарный оператор состоит из трех операндов. Большинство операторов, которые мы используем, бинарные — они требуют два операнда, например, +
, -
, *
, >
, <
и так далее. Тернарный оператор имеет один дополнительный операнд. Пример:
let biggerNumber = num1 > num2 ? num1 : num2;
Эта короткая строка кода выполняет ту же задачу, что и приведенная выше функция, но занимает значительно меньше места.
Подробное объяснение тернарного оператора
{condition} ? {expression if true} : {expression if false}
или на русском:
{условие} ? {выражение1, если условие выполнено} : {выражение2, если условие не выполнено}
Первым операндом является условие. Второй операнд — выражение, которое возвращает значение, если условие истинно (true
). Третий операнд — это альтернативное выражение, которое возвращает значение, если условие ложно (false
).
Преимущества тернарного оператора
Использование тернарного оператора вместо функции имеет два явных преимущества:
- Гарантированное возвращение значения. В противном случае JavaScript выдаст синтаксическую ошибку. Это предотвращает ошибки и невнимательность.
- Компактность кода без ущерба для читабельности.
Заключение
Тернарные операторы лучше всего использовать для коротких и простых условий и выражений. Для сложных логических решений оставьте условные операторы if
или switch
.