将 undefined 转换为 0

问题描述 投票:0回答:4

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;

有没有一种重复性较低的方法来进行此转换?

javascript casting integer undefined
4个回答
16
投票
foo.bar = (foo.bar || 0) + 1;

应该可以。


6
投票

ES2020 和 nullish 合并运算符可以简化它:

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

4
投票

由于

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

假设你的数字永远不会为负数(具体来说,-1)

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

或者这适用于

foo.bar
的任何值,尽管大卫的答案可能是一个更好的主意。

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

0
投票

您可以使用这个简洁的替代方案,使用双波形符 (~~) 作为 按位 NOT 运算符

foo.bar = ~~foo.bar + 1;

© www.soinside.com 2019 - 2024. All rights reserved.