javascriptで変数に値を代入したい
var a = b || c; //however if b > 200 choose c
これを行う簡単な方法はありますか?
var a = (b && b <= 200) ? b : c;
ヒントやアドバイスをありがとう。これをできるだけきれいに書こうとしているだけです。
javascriptで変数に値を代入したい
var a = b || c; //however if b > 200 choose c
これを行う簡単な方法はありますか?
var a = (b && b <= 200) ? b : c;
ヒントやアドバイスをありがとう。これをできるだけきれいに書こうとしているだけです。
var a = b;
if(b == undefined || b > 200){
a = c;
}
さらに単純化できます。
var a = b<=200 && b || c;
または、より読みやすく、
var a = ( b<=200 && b ) || c;
説明:
&&
して、最初の偽の値を取得するか、何もない場合は最後の真の値を取得できます。||
して、最初の真の値を取得するか、何もない場合は最後の偽の値を取得できます。したがって:
b
偽の場合
すると、b<=200 && b
は偽なのでb<=200 && b || c
、c
b
本当なら
もしもb<=200
次に、を与えb<=200 && b
ます。b
これは本当にそうです。b<=200 && b || c
b
もしもb>200
次に、b<=200 && b
を与えますがfalse
、これは偽なので、b<=200 && b || c
を与えc
ます。
いくつかのテスト:
100<=200 && 100 || 50 // 100, because 100 is truly and 100<=200
150<=200 && 150 || 50 // 150, because 150 is truly and 150<=200
'150'<=200 && '150' || 50 // '150', because '150' is truly and 150<=200
300<=200 && 300 || 50 // 50, because 300<=200 is false (but 300 is truly)
'abc'<=200 && 'abc' || 50 // 50, because NaN<=200 is false (but 'abc' is truly)
({})<=200 && ({}) || 50 // 50, because NaN<=200 is false (but {} is truly)
false<=200 && false || 50 // 50, because false is falsy (but 0<=200)
null<=200 && null || 50 // 50, because null is falsy (but 0<=200)
''<=200 && '' || 50 // 50, because '' is falsy (but 0<=200)