执行赋值和逻辑 AND 和三元运算符 [duplicate]

Execution of Assigning value and Logical AND and Ternary operator [duplicate]

提问人:user3055964 提问时间:10/14/2023 最后编辑:VLAZuser3055964 更新时间:10/14/2023 访问量:71

问:

我正在学习 JavaScript,但我不明白第二行的执行顺序是什么。请指教!

let envArr;
const envName = envArr && envArr[0] ? envArr[0] : "env1";
javascript 条件运算符运 算符优先级

评论

0赞 gre_gor 10/14/2023
这里有什么不清楚的?如果是 或 ?您可以轻松地自己测试。(envArr && envArr[0]) ? envArr[0] : "env1"envArr && (envArr[0] ? envArr[0] : "env1")

答:

2赞 Vivek Tikar 10/14/2023 #1

这里的输出将被考虑用于执行三元运算符。envArr && envArr[0]

另一方面,做这样的事情(这是不合逻辑的,但只是为了举例)——

envArr && (envArr[0] ? envArr[0] : "env1");

将仅基于执行三元操作,其输出将与 anded,简化版本将如下所示。envArr[0]envArr

envArr && output_of_ternary

顺便说一句,从您的问题中进行上述检查的更好方法是这样的 -

const envName = envArr?.[0] || 'env1'

我们使用的是可选链接,您可以在此处找到有关可选链接的更多详细信息