在js中, 有如下三个逻辑运算符:
&&: 与(逻辑与操作,表示并且的意思,AND,表示只有当两个或多个条件都同时满足的情况下,结果才为真。)
||: 或(逻辑或,或者的意思,or。 对于多个条件,只要有一个满足条件,结果就为真,只有所有的条件都为假的时候,结果才为假。)
!: 非,取反
问题:
&&可以对真值和假值进行运算,如果两个都是真值,则返回一个真值,否则返回一个假值。但是,真值并不仅限于true,假值也并不仅限于false,下面这些值会被转换成false(其他所有值都为true)
同理||也可以这样理解
总结:
- 只要“||”前面为false,无论“||”后面是true还是false,结果都返回“||”后面的值。
- 只要“||”前面为true,无论“||”后面是true还是false,结果都返回“||”前面的值。
- 只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值。
- 只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值。
由此我们在开发时可以利用逻辑运算符安全地从可能未定义或为空的对象属性中取值如:
//res是undefined或null,或者res.name本身是undefined、null、false、0、""`或 NaN,name 将被赋值为空字符串 ""。
let name = res.name || ""
位运算
位运算都是基于二进制的。所以说,首先需要将这个10进制转成二进制,才能够进行计算的。e
console.log( 5 & 4 ) 结果是4
//
具体过程,4换成二进制0100,5换成二进制0101,0100和0101每一位相互对照,都为1时得到1否则为0,结果为0100也就是4.