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

打错了函数,sorry...

1、看到Js高程第三章Number()函数转换对象为数值时没看懂。
2、然后我尝试了一下用Number()函数转换对象为数值时,结果都是NaN。
3、所以如果有可以转换为数值类型的对象请举例,万分感谢解惑。


红颜莎娜
浏览 562回答 3
3回答

米琪卡哇伊

你需要了解调用Number的时候,到底是怎么执行的?根据js规范,如果参数是对象,会首先把对象转化为原始类型的数据,那么怎么转化为原始类型的数据呢?比如let a = {}那么会首先调用a的valueOf方法,如果结果不是原始类型,那么调用toString方法:a.valueOf()返回对象本身,不是原始类型,所以需要继续调用toString方法;a.toString()返回"[object Object]",是一个字符串,是原始类型,所以接下来会调用Number("[object Object]"),返回NaN;所以你如果想返回数字,那个我们就可以通过修改转化步骤中的返回值来改变结果,比如,可以修改valueOf的返回值:let a = {}a.valueOf = function () {return 2}Number(a) // 2或者修改toString的返回值:let b = {}b.toString = function () {return 3}Number(b) // 3

一只萌萌小番薯

let flag = false;Number(flag)//0let b = new Boolean(false);b //Boolean {false}Number(b)//0可以转换的,会自动包装与拆包(包装类型) 默认 false -> 0 , true -> 1不知道你问的是不是这个?不是的话,可以截个图书上说的具体是啥,哪里没明白
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript