js你不是的那些基础问题-布尔运算符

1 且运算符(&&)

且运算符(&&)往往用于多个表达式的求值

     它的运算规则是:如果第一个运算子的布尔值为true

  则返回第二个运算子的值(注意是值,不是布尔值);如果第一个运算子的布尔值为false

  则直接返回第一个运算子的值,且不再对第二个运算子求值。

't' && '' // ""
't' && 'f' // "f"
't' && (1 + 2) // 3
'' && 'f' // ""
'' && '' // ""

var x = 1;
(1 - 1) && ( x += 1) // 0
x // 1

  上面代码的最后一个例子,由于且运算符的第一个运算子的布尔值为false

  则直接返回它的值0,而不再对第二个运算子求值,所以变量x的值没变。

  

  这种跳过第二个运算子的机制,被称为“短路”。有些程序员喜欢用它取代if结构,

  比如下面是一段if结构的代码,就可以用且运算符改写。

或运算符(||)

  或运算符(||)也用于多个表达式的求值。它的运算规则是:

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

  如果第一个运算子的布尔值为false,则返回第二个运算子的值。

't' || '' // "t"
't' || 'f' // "t"
'' || 'f' // "f"
'' || '' // ""

  短路规则对这个运算符也适用。

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

3 三元条件运算符(?:)

  三元条件运算符由问号(?)和冒号(:)组成,分隔三个表达式。

  它是 JavaScript 语言唯一一个需要三个运算子的运算符。

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

't' ? 'hello' : 'world' // "hello"
0 ? 'hello' : 'world' // "world"

  

 

 

文章内容转自 阮一峰老师 JavaScript教程 https://wangdoc.com/javascript/index.html

原文地址:https://www.cnblogs.com/WernerWu/p/11347512.html