三元条件运算符由问号(?)和冒号(:)组成,分隔三个表达式。它是 JavaScript 语言唯一一个需要三个运算子的运算符。如果第一个表达式的布尔值为**true**,则返回第二个表达式的值,否则返回第三个表达式的值。
't' ? 'hello' : 'world' // "hello"0 ? 'hello' : 'world' // "world"
上面代码的t和0的布尔值分别为true和false,所以分别返回第二个和第三个表达式的值。
通常来说,三元条件表达式与**if...else**语句具有同样表达效果,前者可以表达的,后者也能表达。但是两者具有一个重大差别:
if...else是语句,没有返回值- 三元条件表达式是表达式,具有返回值
所以,在需要返回值的场合,只能使用三元条件表达式,而不能使用**if..else**。
console.log(true ? 'T' : 'F');
上面代码中,console.log方法的参数必须是一个表达式,这时就只能使用三元条件表达式。如果要用if...else语句,就必须改变整个代码写法了。
练习
根据当前年份,返回这一年二月份的天数
var year = 2000;//是否是闰年var isLeap = year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;//得到该年份二月的天数var days = isLeap ? 29 : 28;console.log("二月的天数为:" + days);
下面程序的输出结果是什么?
var x = 1;x = x++ >= 1 ? x++ * x++ : ++x * ++x;console.log(x); // 6
