首页 > javascript +[] === 0 // true 为什么?

javascript +[] === 0 // true 为什么?

===应该只看数据类型,+[]变成什么数据类型?0是被当作布尔,还是number?求解释为什么+[] === 0 // true


+会把右边的操作数转换成数值型,且看unary-plus:

而当操作数位数组时,将它ToNumber之后,就是0。有兴趣的,你可以顺着文档一步步点下去看看每一步,在标准中都是如何规定的


看规范:http://es5.github.io/#x11.4.6

一元加号的语意就是对操作数执行ToNumber()操作,即将操作数转为数字类型。

对于数组来说,首先调用valueOf方法,得到的是数组本身,不是原始类型;那么会继续调用toString方法,得到空字符串'';接下来会将空字符串转为数字,即0

所以:

+[] === 0
【热门文章】
【热门文章】