对象和数组添加

任何人都可以向我解释如何评估以下结果?

{} + {} // NaN [] + {} // "[object Object]" {} + [] // 0 [] + [] // "" 

这是一个完整的解释, 检查它 。

如果直接在控制台中执行它,注意 {} + {}NaN ,因为{}被认为是一个块而不是一个对象。

({}+{})应该是'[object Object][object Object]'

真正的结果是

 console.log({}+{}) // '[object Object][object Object]' console.log([]+{}) // '[object Object]' console.log({}+[]) // '[object Object]' console.log([]+[]) // '' 

添加任何对象及其string表示的数组总是会导致连接

例如:

 [1] + [2] // is merged to "12", so [] + [] is an empty string "" 

你的第二个例子相同

 ['test'] + {} // "test[object Object]" 

所以一个空数组加上一个空对象将会返回一个[object Object]


添加到空对象也很容易:

评估一个简单的空对象: {} // results in undefined

添加两个undefined值是NaN因为你无法对它们进行加法。

注意 :返回值取决于JavaScript的实现(即在哪个浏览器或环境中)

另外: JavaScript中的{} + {}是什么?

 {} + {} 

您不能对两个对象进行添加或任何操作

 [] + {} // "[object Object]" 

它只是一个string和一个对象之间的concat,与alert({});有相同的结果alert({});

 {} + [] // 0 

相同

 [] + [] // "" 

两个空string的串联=空string。