如果第一个值为假,为什么此短路评估 return 未定义?

Why does this short circuit evaluation return undefined if first value is false?

我有一个与此类似的示例,其中第一个表达式的计算结果为 false,第二个未定义,但整个表达式 returns 未定义到 valueResult 中,第一个 false 值不应该终止检查和 return假的?

valueResult = false && 10 === 5 ? 'match' : undefined

我已经添加了控制台日志语句和一个调试器,这就是正在发生的事情,但是当我在浏览器控制台上执行 false && undefined 时,它 returns false。

&&-运算符的优先级高于三元运算符。这就是发生以下情况的原因:

基本上你有一个三元运算符(false && (10 === 5) ? : 'match' : undefined10 === 5 的计算结果为 false,false && false 的结果也为 false。这就是返回 undefined 而不是 'match' 的原因。

要解决此问题,请在 && 之后添加括号,如下所示:

 false && (10 === 5 ? 'match' : undefined)

在您更新的示例中,逻辑 AND … && … 的优先级 (5) 高于三元运算 … ? … : … (3)。

查看 MDN 上的 table:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#table