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

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

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

{name ? name : "no name"}

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

{name ! "no name"} 

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

【问题讨论】:

    标签: javascript reactjs conditional-operator


    【解决方案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 values0"" 等)被跳过以支持 "no name"(使用 ||)还是只是nullundefined(使用??)?
    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 2016-07-15
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多