web-dev-qa-db-ja.com

JavaScriptの三項演算子で条件がtrueの場合のみ割り当てます

JavaScriptでこのようなことをすることは可能ですか?

max = (max < b) ? b;

つまり、条件が真の場合にのみ値を割り当てます。条件が偽の場合、何もしません(割り当てなし)。これは可能ですか?

38
codiac

三項演算子 を使用しないでください。3番目の引数が必要です。変更したくない場合は、maxmaxに再割り当てする必要があります(max = (max < b) ? b : max)。

if-statement の方がはるかに明確です。

if (max < b) max = b;

また、式にする必要がある場合は、 [〜#〜] and [〜#〜] の短絡評価を(ab)使用できます。

(max < b) && (max = b)

ところで、変数名(または式?)の繰り返しを避けたい場合は、 最大関数 を使用できます。

max = Math.max(max, b);
70
Bergi

三項演算子mustを持つ式は両方の値を持ちます。つまり、trueとfalseの両方の場合です。

ただし、できます

max = (max < b) ? b : max;

この場合、条件がfalseの場合、maxの値は変更されません。

11
marekful

条件が偽の場合、maxをそれ自体に設定できます。

max = (max < b) ? b : max;

または、&&演算子を使用して試すことができます。

(max < b) && (max = b);

または、コードをシンプルに保つには、ifを使用します。

if(max < v) max = b;
5
Rocket Hazmat

私はこれを試して三元がより適していると思います

(max < b) ? max = b : '';
4
Aditya

三項演算子ではない特定の演算子はありませんが、次のように使用できます。

max = (max < b) ? b : max;
3
Charlie Kilian

より良いアプローチは

max = Math.max(max, b)
1
dpolicastro

見て:

(max < b) ? max = b : null;

それはうまくいくだろう、私はあなたがコロンを使用することを避けたいと思う、残念ながら、それは起こらない

0
Theristes Gomes