【发布时间】:2018-12-24 18:05:10
【问题描述】:
我想知道以下运算符的逻辑
let test = ! + [];
console.log(test); //true
为什么?
我无法以任何方式测试!
typeof ! //ERROR
! && true //ERROR
【问题讨论】:
-
我觉得和
!( +[] )差不多
标签: javascript
我想知道以下运算符的逻辑
let test = ! + [];
console.log(test); //true
为什么?
我无法以任何方式测试!
typeof ! //ERROR
! && true //ERROR
【问题讨论】:
!( +[] )差不多
标签: javascript
! 是类似+ 的运算符。
如果你要执行typeof +,你会得到同样的错误。
运算符不能这样使用。
let test = ! + [];起作用的原因是因为操作顺序(operator precedence),它确定了以下顺序:
[];+[] //0将其转换为数字;!0 //true 否定该转换。所以,在 expr !+[] 中,+[] 首先被执行,这就是昆汀指出那个骗子的原因
【讨论】: