JavaScript: Тернарный оператор
Оператор | Тип оператора | А | О | Типы значений |
---|---|---|---|---|
… ? … : … |
Тернарный оператор | справа налево | 3 | любое, любое, любое→любое |
Тернарный оператор часто используется, когда переменной необходимо присвоить одно из значений в зависимости от некоторого условия.
Первый операнд используется в качестве условия, он вычисляется и преобразуется (если необходимо) в булево значение. Если первый операнд вычисляется как true
, то вычисляется и возвращается значение второго операнда. Если первый операнд вычисляется как false
, то вычисляется и возвращается значение третьего операнда:
alert(true ? 5 : 10); // 5 alert(false ? 5 : 10); // 10
Помимо первого операнда, вычисляется всегда только какой-то один операнд – второй или третий и никогда оба:
var num = 10; alert(true ? 1 : ++num); // 1 alert(num); // 10
Тернарный оператор имеет ассоциативность справа налево, поэтому следующие два выражения эквивалентны:
a?b:c?d:e?f:g a?b:(c?d:(e?f:g))
Если тернарные операторы вложены в другие тернарные операторы, то для удобства чтения такого кода лучше использовать пробельные символы:
var i = 5; var x = (i == 3) ? 'значение1' : (i == 5) ? 'значение2' : (i > 6) ? 'значение3' : 'значение4'; alert(x); // 'значение2'
С этой темой смотрят: