为什么! + [] ='true',我无法测试'!'以任何方式

时间:2018-07-17 06:28:06

标签: javascript

我想知道以下运算符的逻辑

let test = ! + [];
console.log(test); //true  

为什么?
我无法以任何方式测试!

typeof ! //ERROR

! && true //ERROR

1 个答案:

答案 0 :(得分:8)

!是类似于+的运算符。
如果您要进行typeof +,则会收到相同的错误。

不能那样使用运算符。

let test = ! + [];工作的原因是由于操作顺序(operator precedence),并确定了以下顺序:

  1. 评估[];
  2. 使用+[] //0将其转换为数字;
  3. !0 //true取消该转化。

因此,在expr !+[]中,+[]首先被执行,这就是为什么Quentin指向那个骗子

详细了解expressions and operators on JS MDN