Справка по объединению нулевых значений в Javascript. Как включить пороговое значение? a = b || c, но если b > d, выберите c
Я хочу присвоить значение переменной в Ja vaScript
var a = b || c; //however if b > 200 choose c
Есть ли простой способ сделать это?
var a = (b && b <= 200) ? b : c;
Спасибо за любые советы или рекомендации. Просто пытаюсь написать это как можно более чисто.
2 ответа
Решение
Вы можете упростить это еще больше:
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)