JavaScript等语言是否存在无需重复写判断条件的三元运算符简写?
对应语法实现说明
JavaScript 相关语法
你需要的「条件为真时直接返回条件值,否则返回备选值」的逻辑,在 JavaScript 中有两种成熟的简写方案,无需重复书写判断值:
- 逻辑或运算符
||
写法:props.initialValues.time || props.startTime
判定规则:只要左侧是假值(包括0、空字符串''、false、null、undefined、NaN)就返回右侧,否则返回左侧。适合你确认0、空字符串等不属于合法有效值的场景。 - 空值合并运算符
??
写法:props.initialValues.time ?? props.startTime
判定规则:只有当左侧是null或undefined时才返回右侧,其余所有情况都返回左侧,不会误判合法的假值,适用范围更广。
你尝试写的props.initialValues.time ? : props.startTime属于无效语法,标准 JavaScript 没有提供这种省略三元运算符中间返回值的写法。
其他编程语言的同类语法
这类简写语法通常被称为Elvis运算符,不少主流语言都有相关实现:
- PHP:完全支持你写的
$a ?: $b格式,逻辑和 JS 的||一致 - Kotlin:支持
a ?: b写法,逻辑和 JS 的??一致,仅左侧为 null 时返回右侧 - Python:可以用
a or b实现和 JS||相同的逻辑 - C#:支持
a ?? b的空值合并写法,规则和 JS 的??一致
内容的提问来源于stack exchange,提问作者peytonurquhart
相关产品推荐
相关产品推荐

