为什么{} + []与({} + [])不同?

Cra*_*rks 2 javascript language-lawyer

我最近惊慌地发现以下内容:

> {}+[]
0

> ({}+[])
"[object Object]"

> {}+[]+1
1

> ({}+[])+1
'[object Object]1'

> {}+[] == ({}+[])
false
Run Code Online (Sandbox Code Playgroud)

为什么在括号中包装内容会改变其类型?

Mad*_*iha 5

{} + []是一个空块,后跟一个带有一元运算+符的数组,基本上+[]是0,

({} + [])是一个文字对象加上一个文字数组,两者都被转换成字符串,一个对象"[object Object]"的字符串值加上一个空数组的字符串值,这是""你看到的结果.