【发布时间】:2018-07-05 16:51:58
【问题描述】:
! + [] === true
有人能解释一下这里发生了什么吗?我知道这是不正常的,但是当在数学运算中使用运算符代替变量时,我很难理解编译器在做什么。
更多这种奇怪的例子:
(! + '') === (!'')
但是
(! + []) !== (![])
【问题讨论】:
-
这样阅读:
!(+[])。我建议你把所有的例子都添加到astexplorer.net,然后看看哪些操作符是按什么顺序使用的。 -
这里发生的不是运算符被用作变量。像
[]和{}这样的东西在任何表达式上下文中都是值,就像3和true一样。===、!等运算符被用作运算符。 -
@ASDFGerte 的评论对我来说很有意义。我应该把它读成 (+[]) ,它强制一个对象 -> 字符串 -> 数字。
标签: javascript