且运算符(&&)
运算规则
如果第一个运算子的布尔值为true,则返回第二个运算子的值;如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值。
var x=1
(1-1)&&(x+=1) //0
x//1
或运算符(||)
运算规则
如果第一个运算子的布尔值为true
,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false
,则返回第二个运算子的值。
var x=1;
true || (x=2) //true
x //1
三元运算符
运算规则
如果第一个表达式的布尔值为true
,则返回第二个表达式的值,否则返回第三个表达式的值。
三元运算符和if…else..的区别
通常来说,三元条件表达式与
if...else
语句具有同样表达效果,前者可以表达的,后者也能表达。但是两者具有一个重大差别,if...else
是语句,没有返回值;三元条件表达式是表达式,具有返回值。所以,在需要返回值的场合,只能使用三元条件表达式,而不能使用if..else
。
't'?'hello':'world' // 'hello'