三元表达式的基本格式:布尔表达式?语句1:语句2
简单解释:如果布尔表达式返回结果为真就执行语句1,如果布尔表达式返回结果为假就执行语句2。
但是在实际应用中并没有这么简单,还是有些需要注意的地方,
比如布尔表达式只能是布尔表达式吗?语句1和语句2中有多条语句需要执行又怎么办?等。
鉴于以上细节问题,我总结了几条便于使用三元表达式应该熟知的知识点:
1,布尔表达式的值或者返回值是计算值。
比如1==1返回true,null返回false,parseInt(4)%2==0返回true。
比如:匿名函数的立即执行状态。
(function(){
if(1===1){
return true;
}else{
return false;
}
}())?console.log(true):console.log(false)
3,语句1和语句2可以有返回值,也可以没有返回值。如果有返回值,可以如下来保存返回值:
var grade=80;
var str =grade>=60?'及格':'不及格';
这样str就保存了“及格”值。
4,语句1和2也可以是函数,但得特别注意函数是否是调用状态或者匿名函数立即执行状态。
如下这段代码会返回一段代码段,而不是弹窗显示1或2.
var grade=80;
var f = grade>=60?fun:func;
function fun(){
alert(1);
}
function func(){
alert(2);
}
5,当语句1和2需要执行多条语句时,语句间可用逗号隔开,并用括号包裹语句。
如下:true?(alert(1),console.log(2)):alert(3)