打错了函数,sorry...
1、看到Js高程第三章Number()函数转换对象为数值时没看懂。
2、然后我尝试了一下用Number()函数转换对象为数值时,结果都是NaN。
3、所以如果有可以转换为数值类型的对象请举例,万分感谢解惑。
打错了函数,sorry...
1、看到Js高程第三章Number()函数转换对象为数值时没看懂。
2、然后我尝试了一下用Number()函数转换对象为数值时,结果都是NaN。
3、所以如果有可以转换为数值类型的对象请举例,万分感谢解惑。
说 ES5.1,
Number 会对参数进行toNumber
的操作, toNumber的返回值如下
undefined -> NaN
Null -> +0
true -> 1
false -> +0
Number -> argument
String -> 根据字面量语法解析字符串为数字
Object -> { var primValue = ToPrimitive(argument,"number");
return toNumber(value);}
至于toPrimitive
我用 JS 实现一个给你看呗:http://zonxin.github.io/post/...
let flag = false;
Number(flag)
//0
let b = new Boolean(false);
b //Boolean {false}
Number(b)
//0
可以转换的,会自动包装与拆包(包装类型) 默认 false -> 0 , true -> 1
不知道你问的是不是这个?不是的话,可以截个图书上说的具体是啥,哪里没明白
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
你需要了解调用
Number
的时候,到底是怎么执行的?根据
js
规范,如果参数是对象
,会首先把对象转化为原始类型
的数据,那么怎么转化为原始类型的数据呢?比如
那么会首先调用
a
的valueOf
方法,如果结果不是原始类型,那么调用toString
方法:a.valueOf()
返回对象本身,不是原始类型,所以需要继续调用toString
方法;a.toString()
返回"[object Object]"
,是一个字符串,是原始类型,所以接下来会调用Number("[object Object]")
,返回NaN
;所以你如果想返回数字,那个我们就可以通过修改转化步骤中的返回值来改变结果,比如,可以修改
valueOf
的返回值:或者修改
toString
的返回值:参考链接