[] + {};// "[object Object]"
{} + [];// 0
首先还是不太理解为什么会返回这样的结果,其次就是想知道两个对象相加时,强制类型的转换遵循什么样的规则?
望大神求解!谢谢!
[] + {};// "[object Object]"
{} + [];// 0
首先还是不太理解为什么会返回这样的结果,其次就是想知道两个对象相加时,强制类型的转换遵循什么样的规则?
望大神求解!谢谢!
楼上讲的很详细了,我再给你补充点。。。
比如:1 + [] = 1 + String([]) = 1 + "" = "1"
比如:1 + {} = 1 + String({}) = 1 + "[object Object]" = "1[object Object]";
比如:{} + {} = { /这里作为代码块解析/ } + {} = + {} = Number(String({})) = Number("[object Object]") = NaN
{} + {}的结果是会因浏览器而有不同结果,Chrome(v55)中是object Object字符串连接,但其它的浏览器则是认为相当于+{}运算,得出NaN数字类型。
{} + []的结果是相当于+[],结果是0数字类型。
详细看看这篇文章https://segmentfault.com/a/11...
8 回答4.5k 阅读✓ 已解决
6 回答3k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决
JS中
{}+[]
和[]+{}
的返回值情况是怎样的?