例:
var x, y, z;
//...
x > 100 ? y = x : z = x ;
例:
var x, y, z;
//...
x > 100 ? y = x : z = x ;
はい、同じように機能しますが、演算子の優先順位は常に注意が必要なので、混乱を避けるために括弧をお勧めします。
接線方向に関連しています。C#の null 合体演算子と同様に、JavaScript で
使用することもできます。||
??
これが機能するかどうかはわかりません:
x > 100 ? y = x : z = x ;
しかし、これは機能します:
y = x > 100 ? foo : bar ;
はい、三項演算子は Javascript でも同じように機能します。あなたの例は多くの式を組み合わせているため、優先順位が問題になる可能性があります。優先順位を確保するために括弧を使用する必要があります。
これは(将来的に)あなたを助けるはずです:
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence
優先順位が 8 であるため、最初に>
比較が評価さ?:
れ=
ます。これは、代入の前に三項演算子が実行されることを意味します (つまり、最初のオペランドである条件が評価され、分岐のみが選択されます)。
簡単なテストも
//x = 50;
x = 200;
x > 100 ? y = x : z = x ;
alert((typeof y)+'|'+(typeof z));
あなたの質問に答えたでしょう。
はい、次の基本的な構文を持つという点で同じように機能します
condition ? true-expression : false-expression
式を評価するだけなので、条件によって指定された式の副作用を処理します。
三項演算子に関する Mozilla ドキュメントへのリンクは次のとおりです。
はい、三項演算子は、C、C++、C#、Java、Javascript、Perl、および PHP と同じように Javascript でも機能します。
ここに別のアプローチがあります。三項を使用して、角括弧内の文字列として変数を選択できます。
これは、グローバルであることをwindow
前提y
としz
ています。それ以外の場合は、適切なコンテキストを提供する必要があります。
window[x > 100 ? 'y' : 'z'] = x;