在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,“逻辑或”||
将使用第二个值(false
,null
,undefined
,0
,''
)而“无效合并”??
将使用第二个值,如果第一个是......好吧 nullish i>(null
或 undefined
)。一个空字符串是假的但不是空值,0
是假的但不是空值等等......所以你可以使用其中一个,这取决于你是否要接受所有假值但不是空值。【参考方案2】:
您正在寻找nullish coalescing operator:
name ?? "no name"
【讨论】:
或名称|| "no name" ,在某些情况下 @NickH - 这取决于 A) 您的目标环境是否支持无效合并? (它相对较新。)和 B)您是否希望 all falsy values(0
、""
等)被跳过以支持 "no name"
(使用 ||
)还是只是null
和undefined
(使用??
)?以上是关于在JS中编写三元运算符的更短方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章