Javascript空合并帮助,如何合并阈值?a=b|c,但如果b>;d、 选择c

Javascript空合并帮助,如何合并阈值?a=b|c,但如果b>;d、 选择c,javascript,ternary-operator,null-coalescing-operator,Javascript,Ternary Operator,Null Coalescing Operator,我想给javascript中的变量赋值 var a = b || c; //however if b > 200 choose c 有没有一个简单的方法可以做到这一点 var a = (b && b <= 200) ? b : c; var a=(b&&b您可以进一步简化它: var a = b<=200 && b || c; 我认为你所拥有的一切都很好。对我来说似乎很简单。@MichaelBerkowski不!Hcabnettek的要求是

我想给javascript中的变量赋值

var a = b || c; //however if b > 200 choose c
有没有一个简单的方法可以做到这一点

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

var a=(b&&b您可以进一步简化它:

var a = b<=200 && b || c;

我认为你所拥有的一切都很好。对我来说似乎很简单。@MichaelBerkowski不!Hcabnettek的要求是正确的,因为它可以简化得更多!与未定义值的比较是否应该始终使用==?检查JS中未定义值的正确方法是:
typeof b==“undefined”
@Deleteman:这是一个选项,但不是“正确的方法”。@pst:当然,重新定义
未定义的
是有阴影的。但是你可以总是使用
(b==void 0)
。如果你没有使用严格的等式,你也可以单独使用
b
。@Andy E我只在一组合理的假设下编程;-)(只有在非常非常罕见的情况下,我才真正显式地测试未定义项。)这样就可以了,但可读性是可怕的。一些
()
怎么样,这样我们就不必再猜测自己,去查找JS运算符优先表了?@MichaelBerkowski好吧,你说得对,
()
更具可读性。但我认为JS中的
|
和&
的进位是众所周知的,我想尽量简化它。无论如何,我添加了
()
的可能性
var a = b<=200 && b || c;
var a = ( b<=200 && b ) || 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)