对象和数组添加
任何人都可以向我解释如何评估以下结果?
{} + {} // 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。