两个三目运算符计算规则
前言:
今天遇到这样的表达式不知道怎么运算,查阅资料之后记录一下。。。
step == currentStep
? 'md-create'
: steps[step].completed
? 'ios-checkmark-circle'
: 'md-create'
示例:
(1)两个三目运算符表达式(表达式没什么实际意义,仅供理解)
var a=1
var b=0
a==2?a=8:b==8?b=50:a=5
在这里给三目运算加个括号就明白了
a==2?a=8:(b==8?b=50:a=5)
console.log(a,b)//输出:5 0
解析:也就是相当于先判断a是否等于2,如果是,那么a=8,如果不是,那么执行括号里面的(b==8?b=50:a=5)
,即:继续判断b是否等于8,如果b等于8,那么给b赋值 b=50;如果b不等于8,那么a=5
现在a不等于2,所以执行括号里的表达式(b==8?b=50:a=5)
,这里b不等于8,所执行a=5,相当于这整个表达式得到的结果就是给a赋值:a=5,那么输出a=5,b=0
(2)以下多个示例参考帮助理解
console.log(1==2?true:false?"421121":"4545454")//4545454
相当于:console.log((1==2)?true:(false?"421121":"4545454"))//4545454
console.log(1==2?true:3==3?"421121":"4545454")//421121
console.log(1==2?true:3==7?"421121":"4545454")//4545454
console.log(1==1?true:false?"421121":"4545454")//true