我想知道以下运算符的逻辑
let test = ! + [];
console.log(test); //true
为什么?
我无法以任何方式测试!
typeof ! //ERROR
! && true //ERROR
答案 0 :(得分:8)
!
是类似于+
的运算符。
如果您要进行typeof +
,则会收到相同的错误。
不能那样使用运算符。
let test = ! + [];
工作的原因是由于操作顺序(operator precedence),并确定了以下顺序:
[]
; +[] //0
将其转换为数字; !0 //true
取消该转化。因此,在expr !+[]
中,+[]
首先被执行,这就是为什么Quentin指向那个骗子