问一下js中为什么5&&4 = 4 5&&4&&5=5

5&&4 = 4
那 5&&4&&5 = 5
这不是位运算把? 是两个数不同与运算等于后面的那个数?

&&和||是逻辑运算符,&和|才是位运算符。
逻辑运算符的返回值并不是true或false,逻辑运算符的工作原理是:

表达式A && 表达式B :如果A的值为false(或A的值可以被当做为false)就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
表达式A || 表达式B :如果A的值为true (或A的值可以被当做为true) 就返回A的值并且不执行表达式B,否则执行表达式B并且返回B的值
在javascript中0 "" null undefined会被当做为false,其它的值都可以被当做为true。

所以 5&&4 中5可以被当做为true,就返回&&右边的4

先将数看成2进制的,然后按照上面的逻辑与的规则,对每一位进行逻辑与
比如
4 = 100
5 = 101
4 & 5 = (100)&(101)
1 0 0

1 0 1

= 1 0 0
4 & 5 = (100)&(101) = (100) = 4

这是一个逻辑运算符,具体可以看这个https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Logical_Operators

逻辑与是个好东西
&&

可以实现
if(typeof fun === 'function')fun();

typeof fun === 'function' && fun()

obj && typeof obj.fun === 'function' && obj.fun()