逻辑运算符

1.|| (或)

或运算寻找第一个真值

alert( 1 || 0 ); // 1(1 是真值)
alert( true || 'no matter what' ); //(true 是真值)

alert( null || 1 ); // 1(1 是第一个真值)
alert( null || 0 || 1 ); // 1(第一个真值)
alert( undefined || null || 0 ); // 0(所有的转化结果都是 false,返回最后一个值)

下面的代码将会输出什么?

alert( alert(1) || 2 || alert(3) );

答案:首先是 1,然后是 2

alert 的调用没有返回值。或者说返回的是 undefined

 

获取变量列表或者表达式的第一个真值

假设我们有几个变量,它们可能包含某些数据或者是 null/undefined。我们需要选出第一个包含数据的变量。

我们可以这样应用或运算 ||

let currentUser = null;
let defaultUser = "John";

let name = currentUser || defaultUser || "unnamed";

alert( name ); // 选出了 “John” - 第一个真值

2.&&(与)

与运算 && 在或操作符 || 之前执行

与运算 && 的优先级比或运算 || 要高,所以它将会比或运算先执行。

alert( 5 || 1 && 0 ); // 5
// 如果第一个操作符是真值,
// 与操作返回第二个操作数:
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5

// 如果第一个操作符是假值,
// 与操作直接返回它。第二个操作数被忽略
alert( null && 5 ); // null
alert( 0 && "no matter what" ); // 0

与操作符返回第一个假值,如果没有假值就返回最后一个值。

上面的规则和或运算很像。区别就是与运算返回第一个假值而或操作返回第一个真值。

  

3.!(非)

感叹符号 ! 表示布尔非运算。

操作符接受一个参数,并按如下运作:

  1. 将操作数转化为布尔类型:true/false
  2. 返回相反的值。

两个非运算 !! 有时候用来将某个值转化为布尔类型

  

  

posted @ 2019-08-06 14:42  C_XingM  阅读(105)  评论(0)    收藏  举报