为了账号安全,请及时绑定邮箱和手机立即绑定

Js中的对象转换为数值类型时是不是返回结果都是NaN?

Js中的对象转换为数值类型时是不是返回结果都是NaN?

Smart猫小萌 2019-05-21 09:24:34
打错了函数,sorry...1、看到Js高程第三章Number()函数转换对象为数值时没看懂。2、然后我尝试了一下用Number()函数转换对象为数值时,结果都是NaN。3、所以如果有可以转换为数值类型的对象请举例,万分感谢解惑。
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

你需要了解调用Number的时候,到底是怎么执行的?根据js规范,如果参数是对象,会首先把对象转化为原始类型的数据,那么怎么转化为原始类型的数据呢?比如
leta={}
那么会首先调用a的valueOf方法,如果结果不是原始类型,那么调用toString方法:a.valueOf()返回对象本身,不是原始类型,所以需要继续调用toString方法;a.toString()返回"[objectObject]",是一个字符串,是原始类型,所以接下来会调用Number("[objectObject]"),返回NaN;
所以你如果想返回数字,那个我们就可以通过修改转化步骤中的返回值来改变结果,比如,可以修改valueOf的返回值:
leta={}
a.valueOf=function(){return2}
Number(a)//2
或者修改toString的返回值:
letb={}
b.toString=function(){return3}
Number(b)//3
参考链接
规范
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 1440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号