在JS中编写三元运算符的更短方法[重复]

Posted

技术标签:

【中文标题】在JS中编写三元运算符的更短方法[重复]【英文标题】:Shorter way to write a ternary operator in JS [duplicate] 【发布时间】:2021-10-27 13:08:25 【问题描述】:

所以听我说,我觉得必须有办法,但我真的不确定。

假设我的反应项目中有这个

name ? name : "no name"

但我想知道是否有可能以某种方式写这个短以返回第一个值,如果为真,否则返回第二个值?像这样的

name ! "no name" 

我觉得必须有办法做到这一点,我只是想知道是否有人知道怎么做?

【问题讨论】:

【参考方案1】:

使用逻辑OR||

const name = '';
const test1 = name ? name : "no name";
const test2 = name || "no name";

console.log(test1, test2);

Documentation


有关??|| 的更多信息,请查看:

When should I use ?? (nullish coalescing) vs || (logical OR)?

【讨论】:

谢谢!有什么更好的方法来做到这一点?逻辑或的空运算符? @NickH - 查看我对另一个答案的评论(您的评论似乎已经消失)。 @NickH 这取决于您认为该名称的有效值是什么:如果第一个值是 falsy,“逻辑或”|| 将使用第二个值(falsenullundefined0'')而“无效合并”?? 将使用第二个值,如果第一个是......好吧 nullish i>(nullundefined)。一个空字符串是假的但不是空值,0 是假的但不是空值等等......所以你可以使用其中一个,这取决于你是否要接受所有假值但不是空值。【参考方案2】:

您正在寻找nullish coalescing operator:

 name ?? "no name" 

【讨论】:

或名称|| "no name" ,在某些情况下 @NickH - 这取决于 A) 您的目标环境是否支持无效合并? (它相对较新。)和 B)您是否希望 all falsy values(0"" 等)被跳过以支持 "no name"(使用 ||)还是只是nullundefined(使用??)?

以上是关于在JS中编写三元运算符的更短方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

kotlin中的三元运算符[重复]

Python:拥有三元运算符的有效方法[重复]

如何在python中编写三元条件运算符? [复制]

js回顾,用if语句编写体重,用三元运算符编写标准体重实例

js回顾,用if语句编写体重,用三元运算符编写标准体重实例

在格式化字符串(又名插值字符串)中使用三元运算符时出错 [重复]