まず、3項式はif / else構成の代わりにはなりません。これは、値を返す if / else構成と同等です。つまり、if / else句はコードで、3項式は式です。、それが値を返すことを意味し、。
これはいくつかのことを意味します:
- 三項式は、変数の左側に変数がある場合にのみ使用します
=
、戻り値が割り当てられます
- 戻り値が2つの値のいずれかである場合にのみ3項式を使用します(または、それが当てはまる場合はネストされた式を使用します)
- 式の各部分(?の後と:の後)は副作用なしで値を返す必要があります(
x = true
すべての式が最後の値を返すため、式はtrueを返しますが、xを変更せずにxを変更して戻り値に影響を与えます)
一言で言えば、三項式の「正しい」使用は
var resultofexpression = conditionasboolean ? truepart: falsepart;
condition ? x=true : null ;
3値式を使用しての値を設定する例の代わりに、次のように使用x
できます。
condition && (x = true);
これはまだ式であるため、検証に合格しない可能性があるため、さらに優れたアプローチは
void(condition && x = true);
最後のものは検証に合格します。
ただし、期待値がブール値の場合は、条件式自体の結果を使用します
var x = (condition); // var x = (foo == "bar");
更新
サンプルに関連して、これはおそらくより適切です。
defaults.slideshowWidth = defaults.slideshowWidth || obj.find('img').width()+'px';
condition ? x = true : null;
おそらくと書かれるべきですx = (condition ? true : null);
。余談ですが、JavaScriptではnull
falseと評価されるため、この場合x = (condition);
は同じ結果を得ることができます。