下边这段函数调用为什么返回 NaN,而不是 2?
Number({
valueOf:function(){return 'a'},
toString:function(){return '2'}
}) // NaN
关于 Number(),js 高级程序设计有这么一段话:
如果是对象,则调用对象的 valueOf() 方法,然后依照前面的规则转换返回的值。
如果转换的结果是 NaN,则调用对象的 toString() 方法,然后再次依照前面的规则转换返回的字符串值。
依照上文,Number 函数应该先调用对象的 valueOf,获取到返回值'a'.因为 Number('a')的转换结果是 NaN, 所以继续调用 toString 方法,最终返回 Number('2').是我哪里写错了 /理解错了吗?
1
iLionel 2018-03-31 17:04:40 +08:00 2
是在调用 valueOf 没有返回“基本类型值”之后,才会继续调用 toString
|
2
luckyscript 2018-03-31 17:06:34 +08:00 1
|
3
iLionel 2018-03-31 17:08:59 +08:00
|