关于三元运算符小研究一番
举个栗子:
"a" == "a" ? "是" : "否" + "a" == "v" ? "是" : "否"
按照自己最初的想法,应该输出:是否。
结果并不是,见图输出1

这就涉及到三元运算符的优先级,和结合方式。
首先:三元运算符的运算优先级低于”()“,”+“等;
其次:三元运算符是右结合(从右至左)。
所以自己刚写的运算表达式,相当于:
"a" == "a" ? "是" :( ("否" + "a") == "v") ? "是" : "否")
分解步骤:
1、先计算"否"+"a"-->"否a";
2、"否a" == "v" ? "是" : "否" ,取"否";
3、 "a" == "a" ? "是" :"否",取"是"; 即图中的输出1。
第二个表达式只是验证,因为,"a"=="a" 就取"是"了,后面的计算其实都是浪费。
"a" == "b" ? "是" : "否" + "a" == "v" ? "是" : "否"
见输出2:"否"。
下面的"输出3”,"输出4”,"输出5”,是步步验证。
此三元运算符优先级问题,之前有碰到过,但是未深究,现一次性解决。

浙公网安备 33010602011771号