问题标签 [nullish-coalescing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
82 浏览

javascript - 有没有办法在对象属性解构中利用空值合并运算符(`??`)?

在 ReactJS 中,我通常使用这种 destructurnig props 模式(我想这很惯用):

我可以在解构时添加默认值,这增加了一些安全性:

但是现在我切换到 TypeScriptstrict模式,我很难过。我的道具是由 GraphQl codegen 输入的,几乎所有的属性都包装在一个Maybe<T>类型中,所以当展开时,有actualValue | null | undefined.

如果值为 ,默认值({ maybeUndefined = ""} = props)可以救我undefined,但null值会通过,所以 TS 编译器在唠叨,我的代码导致很多:

这让我有点紧张,因为可选链的成本一文(尽管我不知道它在 2021 年的相关性如何)。我还听说?.操作员过度使用被称为“代码异味”的一个例子。

是否有一种模式,可能利用??运算符,可以使 TS 编译器高兴并且至少可以清除其中的一些very?.long?.optional?.chains

0 投票
3 回答
90 浏览

javascript - 是否存在反向逻辑无效赋值?

因此,??=仅当当前存储的值为空值时,运算符才将值分配给变量。

也许我错过了显而易见的事情,但我想不出一个巧妙的解决方案(没有 if 语句)仅在值不为 null 的情况下分配?

我正在使用 nodeJS 来提供更多上下文


我想

编辑 以更清楚地说明我的问题:

如果该新值不为空,我只想为变量分配一个新值。

0 投票
5 回答
103 浏览

javascript - && 和 ?? 的区别 在 JavaScript 中

我正在尝试使用逻辑 AND &&Nullish 合并运算 ??符运算符来条件渲染变量/值。但是由于某种原因,我不清楚这两个运算符的用法以及它们的工作原理。

请解释这两者之间的区别以及我们何时应该使用其中任何一个来代替if语句。

0 投票
1 回答
37 浏览

javascript - 使用 nullish 合并运算符 (??) 检查对象中是否存在键的注意事项?

使用无效的合并运算符 ( ??),人们很想使用它来指定不存在的对象键的默认值,如此处的答案中所建议的那样例如:

但是,在这种情况下,它的替代方案(主要是inhasOwnProperty)有它们的警告和风险。调用<key> in <object>匹配对象原型链中的键,如此所述。例如,如果对象被遮蔽,调用<object>.hasOwnProperty(<key>)将不起作用,如此处所述。当然,有它自己的陷阱需要提防。hasOwnProperty??

??与检查任何对象中是否存在键的其他方法相比,有哪些陷阱?


换句话说,是否存在以下风险:

更接近于此

或这个

或这个

或者它们与任何一个都不同?

0 投票
1 回答
22 浏览

javascript - 为什么无效合并执行两个部分?

我有一个方法:

但是当我使用无效合并时,两个部分都在执行。