条件运算符是 JavaScript 语言中唯一的三元运算符。也就是说,条件运算符的操作数需要 3 个。实际上,条件运算符是先运算一个表达式的计算结果,然后根据这个运算结果来决定执行另外两个中的哪一个表达式。其语法结构如下所示:
condition ? exprIfTrue : exprIfFalse
condition 参数:条件表达式,条件运算符是根据该表达式的计算结果来判断返回哪个操作数的。
exprIfTrue 参数:当 condition 表达式计算的结果为 true 或者可转换为 true 的其他数据类型值,则执行该表达式的运算。
exprIfFalse 参数:当 condition 表达式计算的结果为 false 或者可转换为 false 的其他数据类型值,则执行该表达式的运算。
如下示例代码展示了条件运算符的用法:
var age = 20
var result = age > 18 ? '成年人' : '未成年人'
console.log(result)
//成年人
条件运算符链
与其他运算符最大的不同在于条件运算符不仅是唯一一个三元运算符,还有就是条件运算符是右结合的。换句话讲,就是条件运算符的第三个表达式可以是另一个条件运算符,如此类推,形成一种链状。这种形式称为条件运算符链,其语法结构如下:
condition1 ? value1
: condition2 ? value2
: condition3 ? value3
: value4
如上述语法结构所示,第一个条件运算符的第三个表达式是第二个条件运算符,而第二个条件运算符的第三个表达式是第三个条件运算符。
如下示例代码展示了条件运算符链的用法:
var score = 85
var result = score >= 90 ? '优秀'
: score >= 80 ? '良好'
: score >= 60 ? '合格' : '不合格'
console.log(result)
于条件运算符链的写法会导致代码结构上不清晰,上述示例代码可以改写为如下示例所示:
var score = 85
var result = score >= 90 ? '优秀'
: ( score >= 80 ? '良好'
: ( score >= 60 ? '合格' : '不合格' ))
console.log(result)
如上述示例代码所示,使用小括号将第二个条件运算符和第三个条件运算符进行包裹,可以让条件运算符链的代码结构清晰一些。这种结构也可以称为条件运算符的嵌套结构。