
下边这段函数调用为什么返回 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 是在调用 valueOf 没有返回“基本类型值”之后,才会继续调用 toString |
2 luckyscript 2018-03-31 17:06:34 +08:00 |
3 iLionel 2018-03-31 17:08:59 +08:00 |