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

发布于 2024-12-06 16:24:20 字数 232 浏览 0 评论 0原文

我想在 javascript 中为变量赋值

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

有没有简单的方法可以做到这一点?

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

感谢您的任何提示或建议。只是想尽可能干净地写这个。

I want to assign a value to a variable in javascript

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

Is there a simple way to do this?

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

Thanks for any tips or advice. Just trying to write this as cleanly as possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

魄砕の薆 2024-12-13 16:24:20
var a = b;
if(b == undefined || b > 200){
    a = c;
}
var a = b;
if(b == undefined || b > 200){
    a = c;
}
不打扰别人 2024-12-13 16:24:20

您可以进一步简化它:

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

或者,更具可读性,

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

解释:

  • 您可以使用 && 来获取第一个假值,或者如果没有任何值,则获取最后一个真值。
  • 您可以使用 || 获取第一个真实值,如果没有,则获取最后一个虚假值。

因此:

  • 如果b为假

    然后,b<=200 && b 为假,因此 b<=200 &&乙|| c 给出 c

  • 如果 b 为真

    • 如果b<=200

      然后,b<=200 && b 给出 b,这是真的,所以 b<=200 &&乙|| c 也给出 b

    • 如果b>200

      然后,b<=200 && b 给出 false,这是假的,所以 b<=200 &&乙|| 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)

You can simplify it even more:

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

Or, more readable,

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

Explanation:

  • You can use && to get the first falsy value or, if there isn't any, the last truly one.
  • You can use || to get the first truly value or, if there isn't any, the last falsy one.

Therefore:

  • If b is falsy

    Then, b<=200 && b is falsy, so b<=200 && b || c gives c

  • If b is truly

    • If b<=200

      Then, b<=200 && b gives b, which is truly, so b<=200 && b || c gives b too.

    • If b>200

      Then, b<=200 && b gives false, which is falsy, so b<=200 && b || c gives c.

Some tests:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文