NO.8 逻辑运算符

JavaScript 里有三个逻辑运算符:|| (或), && (与), ! (非)。他们可以应用在任意类型上

||(或)

  • 从左到右依次计算操作数。
  • 将每一个操作数转化为布尔值。如果结果是 true,就停止计算,返回这个操作数的初始值。
  • 如果所有的操作数都被计算过(也就是,转换结果都是 false),返回最后一个操作数。

两个竖线符号表示了“或”运算:

let a = true;
let b = false;
alert(a || b);
1
2
3

或运算寻找第一个真值,当第一个为真的话就会停下来,如果都不是真的就吧最后一个返回

let a = 0;
let b = 0;
let c = 1;
alert(a || b || c);
1
2
3
4

还可以

if(a > c || a < b ){
	console.log(a + b + c)
}
1
2
3

&& (与)

  • 从左到右依次计算操作数。
  • 将每一个操作数转化为布尔值。如果结果是 false,就停止计算,返回这个操作数的初始值。
  • 如果所有的操作数都被计算过(也就是,转换结果都是 true),返回最后一个操作数。
// 如果第一个操作符是真值,
// 与操作返回第二个操作数:
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5

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

单个'&'

按位与操作符由一个和号字符(&)表示,它有两个操作符数。从本质上来讲,按位与操作就是将两个数值的每一位对齐,对相同位置上的两个数执行AND操作。

按位与AND操作规则:只有两个数值的对应位都是1时才返回1,任何一位是0,结果都是0。

短量取值

操作数不仅仅可能是值,还可能是任意表达式。或运算会从左到右计算并测试每个操作数。当找到第一个真值,计算就会停止,并返回这个值。这个过程就叫做“短路取值”,因为它将从左到右的计算尽可能的少。

var x;
true || (x = 1);
alert(x)
1
2
3
var x = 10;
(x > 8) && alert('hello')
1
2

! (非)

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

语法非常简单就是取反

alert(!true)
1

&=

扩充一下看见奇舞团发了一个算法题'汉明重量'中使用到了这个百度了一下才知道是啥

计算汉明重量(一个二进制位运算)了解一下就好了(面试题)

function ham(n){
  let num = 0;
  while(n !== 0){
    n &= (n - 1);
    num ++;
  }
  return num
}
1
2
3
4
5
6
7
8

判断奇偶

判断输入到是奇数还是偶数(面试题)

function jo(n){
  return n & 1 === 1;
}
1
2
3

任务

一个关于If的问题

下面那个alert将会被执行

if(-1 || 0)alert('first');
if(-1 && 0)alert('second');
if(null || -1 && 1)alert('third');
1
2
3

检测值是否在范围之外

写一个 if 条件句,检查 age 是否不位于 14 到 90 的闭区间。

创建两个表达式:第一个用非运算 !,第二个不用。