Справка по объединению нулей Javascript, как я могу включить пороговое значение?a = b ||c, но если b> d, выберите c - PullRequest
3 голосов
/ 27 сентября 2011

Я хочу присвоить значение переменной в JavaScript

var a = b || c; //however if b > 200 choose c

Есть ли простой способ сделать это?

var a = (b && b <= 200) ? b : c;

Спасибо за любые советы или рекомендации. Просто пытаюсь написать это как можно более чисто.

Ответы [ 2 ]

1 голос
/ 05 августа 2013

Вы можете упростить это еще больше:

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)
1 голос
/ 27 сентября 2011
var a = b;
if(b == undefined || b > 200){
    a = c;
}
...