三元运算符,如果为真则返回检查条件的快捷方式?

Posted

技术标签:

【中文标题】三元运算符,如果为真则返回检查条件的快捷方式?【英文标题】:Ternary operator, shortcut to return checked condition if true? 【发布时间】:2022-01-04 21:30:40 【问题描述】:

我正在寻找对于已经相对紧凑的符号是否有更短的符号。对于代码中相当常见的模式来说,这似乎是某种语法。

这里,三元运算符如果为真则返回 props.initialValues.time,如果为假则返回其他内容:

props.initialValues.time ? props.initialValues.time : props.startTime

但是为什么在这种情况下两次指定检查条件呢? 我发现自己试图这样输入:(也许我不久前在其他地方看到过)

props.initialValues.time ? : props.startTime

我的意思是,如果为真则返回检查的条件,否则返回props.startTime。 JS 或任何其他语言中是否存在用于此目的的类似语法?在谷歌上查了一下,运气不好,也许我的问题措辞不正确,或者它实际上不存在。

【问题讨论】:

【参考方案1】:

如果要检查属性是否存在,可以使用nullish coalescing operator:

props.initialValues.time ?? props.startTime

let a = 5
let b = 6

console.log(a ?? b)
console.log(a ? a : b)

【讨论】:

【参考方案2】:

|| 可以用作快捷方式 - 如果左侧为真,它将评估左侧,否则评估右侧。

props.initialValues.time || startTime

在现代语法中,如果左侧具体为 undefined 或 null,则最好使用 ??

props.initialValues.time ?? startTime

【讨论】:

【参考方案3】:

a ? a : b可以改为a || b

a ? b : a可以改成a && b

所以对于你的情况:

props.initialValues.time || props.startTime

【讨论】:

以上是关于三元运算符,如果为真则返回检查条件的快捷方式?的主要内容,如果未能解决你的问题,请参考以下文章

三元运算

三元表达式

python 三元运算

PHP三元运算符 isset的理解

仅当 JavaScript 中的三元运算符中的条件为真时才赋值

Python 三元运算