.....先手抄一边题目:
var a=2;
var b=1;
true?a++<1?++b:++a>b++?++b:++a:false
嵌套的三目运算要"从前往后算 从后往前"
第一步 最后一个分号 和 第一个问号和之间的部分是个表达式 ,括起来。
true?(a++<1?++b:++a>b++?++b:++a):false
第二步 看加粗部分。问号前边必须是布尔表达式,所以>b++前面的部分是一个表达式,括起来,如下:
true?((a++<1?++b:++a)>b++?++b:++a):false
计算过程:
就是计算表达式((a++<1?++b:++a)>b++?++b:++a),也就是计算(a++<1?++b:++a)>b++的真假,从而判断最终取++b 还是++a的值
计算a++<1,为false,此时a=3
计算++a,即(a++<1?++b:++a)=++a=4,此时a=4
计算4>b++, 4>1为true,即 (a++<1?++b:++a)>b++为true,此时b=2
所以最终取表达式++b的值 为3