下边这段函数调用为什么返回 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').是我哪里写错了 /理解错了吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.