х=(условие)? выражение if : выражение else; - условный оператор имеет примерно такой синтаксис.
Если собрать инфу с тех всех источников, что я, читала то якобы сей оператор читается и выполняется с право налево, так вот выходит инструкция if, даже рассматриваться не станет, если else сработает, или как? Что-то я не догоняю...
JavaScript
Поясните пожалуйста про условный оператор "?"
"оператор читается и выполняется с право налево"
Нет. Он:
"имеет ассоциативность справа налево".
А это значит что если в одной строке встретятся подряд несколько таких операторов, то выполнятся они будут справа налево.
(Условие1) ?(ЕслиДа1): (Условие2) ? (Если Да 2) : (Если Нет 2)
Т. е. выполнится сначала оператор:
(результат2) = [ (Условие2) ? (Если Да 2) : (Если Нет 2) ]
и его результат передастся в:
(Условие1) ?(ЕслиДа1) : (результат2)
Если (Условие2) положительное, то (Если Нет 2) выполняться не будет вообще.
Сначала выполняется Условие, а потом соответствующие ЕслиДа или ЕслиНет.
Нет. Он:
"имеет ассоциативность справа налево".
А это значит что если в одной строке встретятся подряд несколько таких операторов, то выполнятся они будут справа налево.
(Условие1) ?(ЕслиДа1): (Условие2) ? (Если Да 2) : (Если Нет 2)
Т. е. выполнится сначала оператор:
(результат2) = [ (Условие2) ? (Если Да 2) : (Если Нет 2) ]
и его результат передастся в:
(Условие1) ?(ЕслиДа1) : (результат2)
Если (Условие2) положительное, то (Если Нет 2) выполняться не будет вообще.
Сначала выполняется Условие, а потом соответствующие ЕслиДа или ЕслиНет.
Условный оператор и условная операция - разные вещи, хотя в учебниках их зачем-то часто (слава Богу, не всегда!) смешивают и называют одинаково "оператор", из-за чего последующие объяснения в этих учебниках сам черт не разберет ;)
Вот и у тебя в вопросе недопустимая смесь различных частей оператора и операции, как если пропустить их через бетономешалку ;)
Вот и у тебя в вопросе недопустимая смесь различных частей оператора и операции, как если пропустить их через бетономешалку ;)
А назвать источники слабо, да? Потому что тернарный оператор выполняется слева направо, мало того, вычисляется только одно из двух выражений (как и в if, и иногда в && и ||).
Использовать if в строке с присваиванием - весьма оригинальный подход!
Разница между if и ? : ; такая
1.
if ( a%2 == 0 )
b = a;
else
b = 2*a;
2.
b = (a%2 == 0) ? a : 2*a;
В обоих случаях вычисляется условное выражение в скобках, и в зависимости от его значения, выполняется одна из двух веток.
P.S. В силу компактности мне лично ближе второй вариант
Разница между if и ? : ; такая
1.
if ( a%2 == 0 )
b = a;
else
b = 2*a;
2.
b = (a%2 == 0) ? a : 2*a;
В обоих случаях вычисляется условное выражение в скобках, и в зависимости от его значения, выполняется одна из двух веток.
P.S. В силу компактности мне лично ближе второй вариант
Дамир Хакимулин
Тоже использую 2 вариант.. единственное, не знаю, как это называется? регулярное выражение?
что тут непонятного -сперва проверяется условие, есл правильно вычисляется первое выражение, если нет то второе
Ильдар Исламов
"Условный оператор имеет ассоциативность справа налево, поэтому следующие две инструкции эквивалентны: "-получается сначала вычисляется else, а потом иф.
Похожие вопросы
- Условные операторы и лочические операторы JS
- Можно ли в javascript не использовать условный оператор '?' и полностью заменить его if`ами?
- Логические операторы && и || JavaScript
- Необходимо пояснить что выполняют определенные элементы в коде
- НЕ пойму синтаксис плиз поясните. Зачем после else в фигурных скобках пишут if (внутри)? Глупый вопрос не смейтесь с меня.
- Js. Кто может пояснить как это работает? Переменная s не инициализированна же. Но тем не менее работает..
- Пожалуйста объясните человеческим языком где и как используется значение undefined и null в JavaScript ?
- Ребят помогите с кодом пожалуйста (JS, Googl Apps Sсript)
- Помогите, пожалуйста, написать js код для обновления ссылки
- Проверьте 2 кода ((( пожалуйста и ткните носом на ошибку. В общем 1 код работает частично, а второй вообще не работает. JS
"Условный оператор имеет ассоциативность справа налево, поэтому следующие две инструкции эквивалентны: "