1. 与
语法:
- 1
- 2
- 3
与可以理解为且、并且、同时。与在 JavaScript 使用 &&
表示。
- 1
- 2
- 3
- 4
与操作在左侧的表达式结果为 true
或者可以隐式转换为true
的时候,会返回右侧表达式结果,否则返回左侧表达式结果。
如:判断成绩是否处于 80 到 100 之间。
80 到 100 之间换一种表述方式就是,成绩大于等于 80 并且成绩小于等于100,这种表述形式更像程序语言,所以条件就是分数 >= 80 并且 分数 <= 100
。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
if 语句中的条件左右都不满足,所以返回了表达式 score >= 80
的结果false。
如果 score
为 90,则满足两个条件,返回右侧表达式的结果。
2. 或
语法:
- 1
- 2
- 3
或就是或者。在 JavaScript 中使用 ||
表示。
或操作符在当有表达式的结果为 true 或者可以隐式转换为 true 的时候,就返回这个表达式的结果,如果没有则返回右侧表达式的结果。
- 1
- 2
- 3
- 4
如:判断一个数能被 3 整除或者能被 5 整除。
能被 3 或者 5 整除的数,表述成类似于计算机语言的样子就是某个数 % 3 === 0 或者 某个数 % 5 === 0
。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3. 非
语法:
- 1
非就是取反。表达式结果如果是布尔值,则会直接取反,结果如果不是布尔值,则会转换成布尔值再取反。
取反即将 true
变成 false
,或者将 false
变成 true
。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
不仅在日常编码中很常用到非,在许多代码压缩工作中也会用到非,如将 true 压缩成 !0,false 压缩成 !1,从 4 个字符和 5 个字符压缩到 2 个字符。
4. 双重非
双重非就是使用两个非,通常用于将一种数据类型转换成布尔值。
- 1
首先 !1
会得到结果 false
,再通过 !false
就会得到结果 true
。
5. 短路逻辑
短路逻辑是一种逻辑运算符的求值策略,还可以称作短路求值、最小化求值。
JavaScript 在进行与或计算的时候就会用到短路逻辑。
如:判断一个数是 2 的倍数同时又是 5 的倍数。
- 1
- 2
- 3
number 不满足任意一个条件,&&
操作符碰到不成立的表达式就会直接返回这个表达式。
显然 number % 2 === 0
就不成立,所以直接返回这个表达式的结果,这样一个逻辑运算就已经得出结果了,JavaScript 不会再计算右侧的表达式。
这就是短路逻辑,只要得出了结果,就不会再继续计算。
6. 小结
JavaScript 中有与&&
、或||
、非!
三种逻辑运算符,用于处理值之间的逻辑关系,当需要多个条件的相互关系来决定结果的时候,就会用到逻辑运算符。