我想看看是否有一个更短的符号来代替已经相对紧凑的符号。这似乎是代码中相当常见的模式中存在的某种语法。
这里,三元运算符如果为真则返回 props.initialValues.time,如果为假则返回其他值:
props.initialValues.time ? props.initialValues.time : props.startTime
但是为什么在这种情况下要指定两次检查条件呢? 我发现自己试图这样输入:(也许我不久前在其他地方看到过它)
props.initialValues.time ? : props.startTime
我的意思是,如果为 true,则返回检查的条件,否则返回 props.startTime。 JS 或任何其他语言中是否存在用于此目的的类似语法?在谷歌上检查了一下,运气不佳,也许我的问题措辞不正确,或者它实际上不存在。
||
可以用作快捷方式 - 如果左侧为真,它将评估左侧,否则评估右侧。
props.initialValues.time || startTime
在现代语法中,如果左侧具体为
undefined 或 null:,最好使用
??
props.initialValues.time ?? startTime
如果要检查属性是否存在,可以使用 nullish 合并运算符:
props.initialValues.time ?? props.startTime
let a = 5
let b = 6
console.log(a ?? b)
console.log(a ? a : b)
a ? a : b
可以改为a || b
a ? b : a
可以改为a && b
所以对于你的情况:
props.initialValues.time || props.startTime