且运算符(&&)

用于多个表达式的求值

运算规则

如果第一个运算子的布尔值为true,则返回第二个运算子的值;如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值。

  1. var x=1
  2. (1-1)&&(x+=1) //0
  3. x//1

或运算符(||)

运算规则

如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false,则返回第二个运算子的值。

  1. var x=1;
  2. true || (x=2) //true
  3. x //1

三元运算符

运算规则

如果第一个表达式的布尔值为true,则返回第二个表达式的值,否则返回第三个表达式的值。

三元运算符和if…else..的区别

通常来说,三元条件表达式与if...else语句具有同样表达效果,前者可以表达的,后者也能表达。但是两者具有一个重大差别,if...else是语句,没有返回值;三元条件表达式是表达式,具有返回值。所以,在需要返回值的场合,只能使用三元条件表达式,而不能使用if..else

  1. 't'?'hello':'world' // 'hello'