JS 中的运算符优先级在 ? 之间和|| [已关闭]

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

在上图中,我得到了一些新值作为输出。有人可以解释一下为什么会发生这种情况吗?我以为我会得到测试值作为输出,但事实似乎并非如此。预先感谢

javascript operator-keyword ternary
1个回答
0
投票

首先检查

first
对象上是否存在
variable
。因为它是
true
。表达式通过并分配
"new value"
。该条件将短路,并且无需检查
1 > 5
条件。

注意: 如果

first
的值为
undefined
或 false,则检查
1 > 5
表达式。这将导致
false
,因此将分配
"other value"

const variable = { first: "test value" }; // variable.first is present

const newVal = (variable?.first || (1 > 5)) ? "new value" : "other value";
//                      ^ true  OR  ^ false = ^ true value

console.log(newVal); // "new value"

© www.soinside.com 2019 - 2024. All rights reserved.