代码:
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)
这个我没有理解到。为什么?
三目是优先级最低的
fa(n)
:因为你没加括号,?
后面是属于一块,:
后面是一块
你理解错了。最好用括号,这样就不用死记了。如果按你理解9-2优先级低,那前面的2-1也低了
没必要死记硬背,不确定的优先级就用括号
你对三目运算都理解错了
这个是你对三目运算符理解出现了偏差...
三目运算符 基本语法为: expression ? sentence1 : sentence2
表示当 expression 的值为真时,会执行sentence1,否则执行 sentence2
注意:因为Javascript 脚本解释器将分号 “ ; ” 作为语句的结束标志,所以 statementA 和 statementB 必须为单个语句(或者说是一个完整的整体),不能使用分号,否则会报错。
理解了概念后对你示例中的语句 var n1=n1 ? 2-1 : 9-2; 稍稍变化下就是
一个三目表达式: let three = n1 ? 2-1 : 9-2;
一个赋值语句: var n1 = three;
你提出的 理解fa()这个运算等效于 (n==1 ? 3-1 : 9)-2; 这个是个错误的理解,原因是 9-2 这个是一个statementB,或者说这个是 三目运算符中冒号后面完整的部分