【发布时间】:2021-08-07 00:56:15
【问题描述】:
有人可以解释为什么result 在此语句中的计算结果为20?
let result = 10 ?? true ? 20 : 30;
鉴于 nullish 合并以从左到右的方式评估语句并且 precedence 高于三元运算符,为什么不假设 result 应该是 10 是安全的?
注意:如果添加了分组运算符,则result 为10。
let result = 10 ?? (true ? 20 : 30);
【问题讨论】:
-
“为什么安全” 您自己给出了答案:“nullish coalescing 以从左到右的方式评估语句,优先级高于三元运算符”。这意味着您的第一个表达式等同于
(10 ?? true) ? 20 : 30。就像*的优先级高于+:1 * 2 + 3 === (1 * 2) + 3
标签: javascript operators