JavaScript

Поясните пожалуйста про условный оператор "?"

х=(условие)? выражение if : выражение else; - условный оператор имеет примерно такой синтаксис.
Если собрать инфу с тех всех источников, что я, читала то якобы сей оператор читается и выполняется с право налево, так вот выходит инструкция if, даже рассматриваться не станет, если else сработает, или как? Что-то я не догоняю...
"оператор читается и выполняется с право налево"
Нет. Он:
"имеет ассоциативность справа налево".

А это значит что если в одной строке встретятся подряд несколько таких операторов, то выполнятся они будут справа налево.

(Условие1) ?(ЕслиДа1): (Условие2) ? (Если Да 2) : (Если Нет 2)

Т. е. выполнится сначала оператор:

(результат2) = [ (Условие2) ? (Если Да 2) : (Если Нет 2) ]

и его результат передастся в:
(Условие1) ?(ЕслиДа1) : (результат2)

Если (Условие2) положительное, то (Если Нет 2) выполняться не будет вообще.

Сначала выполняется Условие, а потом соответствующие ЕслиДа или ЕслиНет.
Жека Ха.
Жека Ха.
4 466
Лучший ответ
Условный оператор и условная операция - разные вещи, хотя в учебниках их зачем-то часто (слава Богу, не всегда!) смешивают и называют одинаково "оператор", из-за чего последующие объяснения в этих учебниках сам черт не разберет ;)
Вот и у тебя в вопросе недопустимая смесь различных частей оператора и операции, как если пропустить их через бетономешалку ;)
А назвать источники слабо, да? Потому что тернарный оператор выполняется слева направо, мало того, вычисляется только одно из двух выражений (как и в if, и иногда в && и ||).
Ильдар Исламов щас попытаюсь назвать, если найду-в книги про это не писалось...
Ильдар Исламов http: // www. puzzleweb. ru/javascript/9_conditionals. php в низ крутани там где начинают писать про "?" 3 абзацик.
"Условный оператор имеет ассоциативность справа налево, поэтому следующие две инструкции эквивалентны: "
Использовать if в строке с присваиванием - весьма оригинальный подход!

Разница между if и ? : ; такая

1.
if ( a%2 == 0 )
b = a;
else
b = 2*a;

2.
b = (a%2 == 0) ? a : 2*a;

В обоих случаях вычисляется условное выражение в скобках, и в зависимости от его значения, выполняется одна из двух веток.

P.S. В силу компактности мне лично ближе второй вариант
Дамир Хакимулин Тоже использую 2 вариант.. единственное, не знаю, как это называется? регулярное выражение?
что тут непонятного -сперва проверяется условие, есл правильно вычисляется первое выражение, если нет то второе
Ильдар Исламов "Условный оператор имеет ассоциативность справа налево, поэтому следующие две инструкции эквивалентны: "-получается сначала вычисляется else, а потом иф.