首页 新闻 搜索 专区 学院

三目运算 中 表达式

0
悬赏园豆:20 [待解决问题]

代码:

复制代码
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)

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

淋风淼淼的主页 淋风淼淼 | 初学一级 | 园豆:127
提问于:2022-06-23 17:08
< >
分享
所有回答(6)
1

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

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

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

会长 | 园豆:11057 (专家六级) | 2022-06-23 17:40
1

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

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

你对三目运算都理解错了

明日小路 | 园豆:573 (小虾三级) | 2022-06-24 15:58
0

三目是优先级最低的

Jijidawang | 园豆:209 (菜鸟二级) | 2022-06-24 16:37
0

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

三目运算符 基本语法为: 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,或者说这个是 三目运算符中冒号后面完整的部分

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