Пример:
var x, y, z; //... x > 100 ? y = x : z = x ;
Да, он работает одинаково, хотя приоритет оператора всегда сложен, поэтому я бы рекомендовал скобки, чтобы избежать путаницы.
касательно связанных .. Вы также можете использовать || в JavaScript, аналогично нулюоператор объединения ?? в C #
||
??
Я не уверен, что это работает:
x > 100 ? y = x : z = x ;
Но это работает:
y = x > 100 ? foo : bar ;
Вот другой подход.Вы можете использовать троицу, чтобы выбрать переменную в виде строки в квадратных скобках.
Это window предполагает, что y и z являются глобальными.В противном случае вам необходимо указать правильный контекст.
window
y
z
window[x > 100 ? 'y' : 'z'] = x;
Да, в соответствии с условным оператором Статья в Википедии и стандартом ECMA-262 (см. Раздел 11.12).
Да, троичные операторы работают в Javascript так же, как и в C, C ++, C #, Java, Javascript, Perl и PHP.
Да, он работает так же, как и в следующем базовом синтаксисе
condition ? true-expression : false-expression
Он только оценивает выражение и, следовательно, обрабатывает побочные эффекты для выражения, определяемого условным выражением.
Вот ссылка на документацию Mozilla по троичному оператору
Это должно помочь вам (в будущем):
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence
Прежде всего будет оцениваться сравнение >, поскольку оно имеет приоритет 8. ?: имеет приоритет 15, ниже чем 16 для =. Это означает, что троичный оператор будет запущен перед любыми присваиваниями (т. Е. Будет выполнен первый операнд, условие, а затем будет выбрана только ветвь).
>
?:
=
Также простой тест
//x = 50; x = 200; x > 100 ? y = x : z = x ; alert((typeof y)+'|'+(typeof z));
ответил бы на ваш вопрос.
Да, троичные операторы работают одинаково в Javascript . В вашем примере объединено много выражений, поэтому приоритет может быть проблемой. Вы должны заключить в скобки, чтобы обеспечить приоритет.