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 = (foo.bar || 0) + 1;
应该可以。
ES2020 和 nullish 合并运算符可以简化它:
foo.bar = (foo.bar ?? 0) + 1;
由于
undefined + 1
是 NaN,它是假的,而 undefined
是假的,所以你有几个选择。
假设你的数字永远不会为负数(具体来说,-1)
foo.bar = foo.bar + 1 || 1
或者这适用于
foo.bar
的任何值,尽管大卫的答案可能是一个更好的主意。
foo.bar ? foo.bar++ : foo.bar = 1
您可以使用这个简洁的替代方案,使用双波形符 (~~) 作为 按位 NOT 运算符。
foo.bar = ~~foo.bar + 1;