'+new Array(017)' 输出? js+相当于Number()类型转换

2017-10-20 23:39:17 1,924 views
首先,前面+是一元运算符,相当于我们说的正负,无运算效果,但是可以将字符串等转为number类型。
 此题中017其实是八进制(因为开头0表示是8进制,开头0x是16进制),故而是是Array(15)。
这里相当于对于一个未赋值但是长度为15的数组进行number类型转化,其结果为NaN
照规则,数组对象应该采用Number,所以先执行valueOf,发现valueOf返回的是自己,所以继续执行toString,过程如下:
Number(new Array(15))
// new Array(15).valueOf()不是原始值,所以执行toString()
Number(new Array(15).toString())
Number(",,,,,,,,,,,,,,")
NaN
所以答案是NaN

0

No Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。