首页 新闻 会员 周边 捐助

三目运算 中 表达式

0
悬赏园豆:30 [已解决问题] 解决于 2022-07-04 11:34

代码:

复制代码
function fa(n) { var n1=n==1 ? 2-1 : 9-2; return n1; }
// 运行 fa(1)=1 // fa(2)=7

function fb(n) { var n1=n==1 ? (2-1) : (9-2); return n1; }
// 运行 fb(1)=1 // fb(2)=7

function fc(n) { var n1=(n==1 ? 2-1 : 9)-2; return n1; }
// 运行 fc(1)=-1 // fc(2)=7
复制代码

我的理解fa()这个运算等效于 (n==1 ? 3-1 : 9)-2;

但我测试的结果,等效于 n==1 ? (3-1) : (9-2)

这个我没有理解到。为什么?

淋风淼淼的主页 淋风淼淼 | 初学一级 | 园豆:125
提问于:2022-06-23 17:08
< >
分享
最佳答案
1

三目是优先级最低的

收获园豆:10
Jijidawang | 初学一级 |园豆:154 | 2022-06-24 16:37
其他回答(5)
2

fa(n):因为你没加括号,? 后面是属于一块,:后面是一块

收获园豆:3
三人乐乐 | 园豆:4823 (老鸟四级) | 2022-06-23 17:19
0

你理解错了。最好用括号,这样就不用死记了。如果按你理解9-2优先级低,那前面的2-1也低了

收获园豆:2
会长 | 园豆:12463 (专家六级) | 2022-06-23 17:40
2

没必要死记硬背,不确定的优先级就用括号

收获园豆:2
飒沓流星 | 园豆:1099 (小虾三级) | 2022-06-23 17:57
0

你对三目运算都理解错了

收获园豆:1
明日小路 | 园豆:466 (菜鸟二级) | 2022-06-24 15:58
1

这个是你对三目运算符理解出现了偏差...

三目运算符 基本语法为: expression ? sentence1 : sentence2
表示当 expression 的值为真时,会执行sentence1,否则执行 sentence2
注意:因为Javascript 脚本解释器将分号 “ ; ” 作为语句的结束标志,所以 statementA 和 statementB 必须为单个语句(或者说是一个完整的整体),不能使用分号,否则会报错。

理解了概念后对你示例中的语句 var n1=n1 ? 2-1 : 9-2; 稍稍变化下就是
一个三目表达式: let three = n
1 ? 2-1 : 9-2;
一个赋值语句: var n1 = three;

你提出的 理解fa()这个运算等效于 (n==1 ? 3-1 : 9)-2; 这个是个错误的理解,原因是 9-2 这个是一个statementB,或者说这个是 三目运算符中冒号后面完整的部分

收获园豆:12
西越泽 | 园豆:10775 (专家六级) | 2022-06-30 11:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册