([] + {}).length的结果是多少

最近加一个技术学习群,群的问题就是这个,很有意思。

我当然直接在控制台里去打印看下结果了

在sf里有人给了解释:

([]).length --> 空数组的length是0

({}).length --> {}是一个空对象,这个对象是没有length 方法的所以是undefined

([] + {}).length --> 实际这两个是不能用操作符"+"的,这个表达式实际是分别调用了[]和{}的toString()方法。[]返回空字符串"",而{}返回"[object Object]",这两个字符串拼在一起刚好是15个字符的一个字符串。

可以这样验证:
([]).toString() // ""
({}).toString() // "[object Object]"
([]+{}) // "[object Object]"

 

"[object Object]"转换成了字符串长度是15.

posted @ 2017-11-24 00:46  Lawliet__zmz  阅读(268)  评论(0编辑  收藏  举报