推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
rabbbit

求解,关于 Number()函数

  •  
  •   rabbbit · Mar 31, 2018 · 2818 views
    This topic created in 2971 days ago, the information mentioned may be changed or developed.

    下边这段函数调用为什么返回 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').是我哪里写错了 /理解错了吗?

    iLionel
        1
    iLionel  
       Mar 31, 2018   ❤️ 2
    是在调用 valueOf 没有返回“基本类型值”之后,才会继续调用 toString
    iLionel
        3
    iLionel  
       Mar 31, 2018
    https://es5.github.io/#x8.12.8 感觉这个会更清楚一点
    @luckyscript
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5696 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:22 · PVG 11:22 · LAX 20:22 · JFK 23:22
    ♥ Do have faith in what you're doing.