You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript逻辑或与三元运算符优先级问题咨询

为什么x和y的输出结果不同?

问题核心是运算符优先级——JavaScript里三元运算符?:的优先级比逻辑或||更高,导致两个语句的解析逻辑完全不一样:

解析x的语句

var x = 5 || true ? 100 : 1000;

因为?:优先级更高,这个表达式会被自动分组为:

var x = (5 || true) ? 100 : 1000;

5 || true的结果是5(逻辑或遇到第一个真值就返回),5是真值,所以三元运算符执行第一个分支,x最终等于100。

解析y的语句

var y = 5 || (true ? 100 : 1000);

这里的括号强制改变了运算顺序,先执行括号内的三元运算:true ? 100 : 1000得到100,然后执行逻辑或5 || 100,因为5是真值,直接返回5,所以y最终等于5。

直白点说:不带括号的情况下,三元运算会优先和||两边的表达式结合,不会让||先执行。

内容的提问来源于stack exchange,提问作者Maverick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:03:37