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

问题描述 投票:0回答:3

我想看看是否有一个更短的符号来代替已经相对紧凑的符号。这似乎是代码中相当常见的模式中存在的某种语法。

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

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

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

props.initialValues.time ? : props.startTime

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

javascript syntax conditional-statements operators conditional-operator
3个回答
2
投票

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

props.initialValues.time || startTime

在现代语法中,如果左侧具体为

undefined 或 null
,最好使用 ??

props.initialValues.time ?? startTime

1
投票

如果要检查属性是否存在,可以使用 nullish 合并运算符:

props.initialValues.time ?? props.startTime

let a = 5
let b = 6

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


0
投票

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

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

所以对于你的情况:

props.initialValues.time || props.startTime
© www.soinside.com 2019 - 2024. All rights reserved.