问题标签 [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.
javascript - Javascript - 用 0 替换未定义
我有一个由用户输入定义的变量。我只想替换它的值,如果它是undefined
. 但如果是NaN
. 我该怎么做?
我试过这样做x || 0
,但这也取代了NaN
价值观。
javascript - 是否有可选链接/无效合并的糖以防止 Typeerrors 说 Array.map?
是否有任何糖可以确保 map 不会使用可选链接/ nullishcoalescing 之类的工具出现类型错误?
javascript - 关于 PhpStorm 中可选链接和空值合并 JavaScript 运算符支持的问题
我想问是否有人知道如何支持 PhpStorm 中的 JavaScript 空值合并运算符 ( ??
) 和可选链接运算符 ( ?.
)。
目前我正在 PhpStorm 中开发一个 react-native 项目,两个运算符都工作正常,但 PhpStorm 设置了一个expression expected
错误,并且所有使用这些运算符的文件都带有错误下划线。
如何添加对这些功能的支持以使 IDE 满意?
typescript - 为什么无效的合并运算符在打字稿中不能用作类型保护?
Typescript 3.7 引入了nullish 合并运算符。对于像这样的情况,它似乎是完美的类型保护
但是,如果您将该代码放入typescript playground,它会提醒您传递给 fs / fn 函数的 a 和 b 参数,例如:
我进行了进一步的实验,发现这不仅是一个孤立于无效合并运算符的问题,而且当 typescript 能够使用 soemthing 作为 typeguard 时,我无法改变主意(在下面你可以找到一些示例)
最后两行最让我困惑。在我看来,分配给 x7 和 x8 的两个表达式都是完全等价的,但是在分配给 x8 的表达式中,类型保护工作,对于 x7 表达式中的打字稿来说似乎并不合适:
我不确定,如果打字稿由于某种原因无法应用类型保护,或者它实际上是打字稿中的错误。那么,当 typescript 可以应用 typeguard 时,是否有规则手册?或者它可能是一个错误?还是有其他原因我没有编译这些示例?
顺便提一句。当使用用户定义的类型保护时,当然可以完美地工作,但最好不必添加一些运行时代码来使类型保护工作。
javascript - 使用无效合并或可选链接进行安全解构
目前我正在使用以下代码进行解构:
现在,由于我们有可选的链接,我可以这样做:
有没有更好的方法或安全的方法来使用无效合并或可选链接进行解构?
javascript - 解构一个可选的链接对象,以获得......其余的?
我有这个设置
我最终得到一个不存在的错误discard_me
,但如果也不存在,这是可以预期chaining
的。似乎可选链接应该涵盖分配的左侧和右侧的关注点。
有没有办法在没有无效合并的情况下解决这个问题?
javascript - 与无效合并运算符相反
Nullish 合并运算符允许分配一个变量,如果它不是null
or undefined
,或者一个表达式,否则。
这是对以前使用的改进,||
因为如果是空字符串或其他虚假但不为空值,||
也会分配其他值。b
但是,有时,我们也&&
用于赋值,例如
我们只想func
在b
它不是 nullish 的情况下执行,否则分配 nullish b
。
当然,&&
检查虚假性,而不是无效性。有无效的版本&&
吗?
javascript - 在 javascript 中哪里可以使用 nullish 运算符?
像这种情况我想过滤“空”和“未定义”
但它的工作每一个真实的价值。
所以我只有一个选择...
在这种情况下,有什么方法可以使用 nullish 运算符吗?
什么时候通常使用无效运算符?
谢谢你
javascript - 空值合并运算符 (??) 与 ECMAScript 中的逻辑 OR 运算符 (||) 有何不同?
ES2020 引入了nullish 合并运算符 ( ??
),如果左操作数为 null 或未定义,则返回右操作数。此功能类似于逻辑 OR 运算符 ( ||
)。例如,以下表达式返回相同的结果。
结果:
那么nullish 运算符有何不同,它的用例是什么?
typescript - 你可以破坏一个对象并对潜在的未定义常量进行无效合并吗?
我使用 React,所以我有一个 props 对象,例如:
有没有办法在破坏对象时使用无效合并?我不能使用这个(由于团队定义的 ESlint 规则):