NO.8 逻辑运算符
JavaScript 里有三个逻辑运算符:||
(或), &&
(与), !
(非)。他们可以应用在任意类型上
||(或)
- 从左到右依次计算操作数。
- 将每一个操作数转化为布尔值。如果结果是
true
,就停止计算,返回这个操作数的初始值。 - 如果所有的操作数都被计算过(也就是,转换结果都是
false
),返回最后一个操作数。
两个竖线符号表示了“或”运算:
let a = true;
let b = false;
alert(a || b);
1
2
3
2
3
或运算寻找第一个真值,当第一个为真的话就会停下来,如果都不是真的就吧最后一个返回
let a = 0;
let b = 0;
let c = 1;
alert(a || b || c);
1
2
3
4
2
3
4
还可以
if(a > c || a < b ){
console.log(a + b + c)
}
1
2
3
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
2
3
4
5
6
7
8
9
单个'&'
按位与操作符由一个和号字符(&)表示,它有两个操作符数。从本质上来讲,按位与操作就是将两个数值的每一位对齐,对相同位置上的两个数执行AND操作。
按位与AND操作规则:只有两个数值的对应位都是1时才返回1,任何一位是0,结果都是0。
短量取值
操作数不仅仅可能是值,还可能是任意表达式。或运算会从左到右计算并测试每个操作数。当找到第一个真值,计算就会停止,并返回这个值。这个过程就叫做“短路取值”,因为它将从左到右的计算尽可能的少。
var x;
true || (x = 1);
alert(x)
1
2
3
2
3
var x = 10;
(x > 8) && alert('hello')
1
2
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
2
3
4
5
6
7
8
判断奇偶
判断输入到是奇数还是偶数(面试题)
function jo(n){
return n & 1 === 1;
}
1
2
3
2
3
任务
一个关于If的问题
下面那个alert将会被执行
if(-1 || 0)alert('first');
if(-1 && 0)alert('second');
if(null || -1 && 1)alert('third');
1
2
3
2
3
检测值是否在范围之外
写一个 if
条件句,检查 age
是否不位于 14 到 90 的闭区间。
创建两个表达式:第一个用非运算 !
,第二个不用。