【问题标题】:Cast undefined to 0将未定义强制转换为 0
【发布时间】:2017-01-04 02:57:35
【问题描述】:

在 JavaScript (ES2015) 中是否有一个简洁的操作可以做到这一点:

x => x === undefined ? 0 : x

我一直遇到想要增加x 的情况,但它最初是未定义的,因此代码变为:

foo.bar = (foo.bar === undefined ? 0 : foo.bar) + 1;

foo.bar = (foo.bar ? foo.bar : 0) + 1;

有没有更少重复的方式来做这个演员?

【问题讨论】:

  • 你试过(foo.bar || 0)吗?

标签: javascript casting integer undefined


【解决方案1】:
foo.bar = (foo.bar || 0) + 1;

应该可以。

【讨论】:

    【解决方案2】:

    ES2020 和 nullish 合并运算符允许对其进行简化:

    foo.bar = (foo.bar ?? 0) + 1;
    

    【讨论】:

      【解决方案3】:

      由于 undefined + 1 是 NaN,它是假的,而 undefined 是假的,你有几个选择。

      假设你的数字永远不会是负数(特别是 -1)

      foo.bar = foo.bar + 1 || 1
      

      或者这适用于foo.bar 的任何值,尽管大卫的回答可能是一个更好的主意。

      foo.bar ? foo.bar++ : foo.bar = 1
      

      【讨论】:

        猜你喜欢
        • 2021-02-25
        • 2019-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多