【问题标题】:why ! + [] = 'true', I can't test '!' in any way [duplicate]为什么 ! + [] = 'true',我无法测试'!'以任何方式[重复]
【发布时间】:2018-12-24 18:05:10
【问题描述】:

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

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

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

typeof ! //ERROR

! && true //ERROR

【问题讨论】:

  • 我觉得和!( +[] )差不多

标签: javascript


【解决方案1】:

! 是类似+ 的运算符。
如果你要执行typeof +,你会得到同样的错误。

运算符不能这样使用。

let test = ! + [];起作用的原因是因为操作顺序(operator precedence),它确定了以下顺序:

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

所以,在 expr !+[] 中,+[] 首先被执行,这就是昆汀指出那个骗子的原因

阅读更多关于expressions and operators on JS MDN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 2020-04-18
    • 2012-01-16
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多