三元运算符,如果为真则返回检查条件的快捷方式?
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
【讨论】:
以上是关于三元运算符,如果为真则返回检查条件的快捷方式?的主要内容,如果未能解决你的问题,请参考以下文章