Number()可以转换任何对象,后两者是针对字符串转数值
Number()
- Boolean类型。true -> 1 false -> 0
- undefined -> NaN
- null -> 0
number类型
有效的八进制,则输出对应的十进制 有效的十六进制,还是输出对应的十进制
字符串
-->仅包含数字,转换成数字 Number('01113444') -> 1113444(前面的0忽略) Number('011') -> 11 (不会转换成8进制) -->有效的浮点数,转换成对应的浮点值 Number('01.189') -> 1.189 Number('1.20') -> 1.2 (前后0 都忽略) --> 有效的16进制,转换成对应的10进制 Number( '0xa') -> 10 --> 空字符串(不包含任何字符) Number('') -> 0 Number(' ') -> 0 --> 其他管他是啥,都是NaN Numer('we121') -> NaN
6.对象 先调用valueOf,如果是NaN 再调用toString() (还在研究)
parseInt 和 parseFloat 相似
<相同点>:
parseInt(undefined || null) -> NaN
parseFloat(undefined || null) -> NaN
讲道理,这样写没有意义。设定的时候parseInt和parseFloat设定的时候是string,我就想试试看 有没有人跟我一样闲….可以解析8进制和16进制
--> 以0开头,满足8进制,都将从8进制数字转换成10进制(默认),不是8进制,那就不是咯。。 parseInt(011) -> 9 parseInt(099) -> 99 parseInt(01299) -> 1299 那么 parseInt('010') ->???? 答案 是 不确定......可能是10 也可能是 8... <span style="color:red;">注</span>:旧浏览器由于使用旧版本的ECMAScript(ECMAScript版本小于ECMAScript 5,当字符串以"0"开头时默认使用八进制,ECMAScript 5使用的是十进制),所以都有可能咯,看浏览器咯 --> 以0x开头,满足16进制的格式,都将从16进制数字转换成10进制的(默认),不是16进制,那就不是咯。。 parseInt(0xa) -> 10 parseInt(0xgg) 就报错咯
所以呀!
parseFloat(01.22) 试试 就报错了~
parseFloat(‘01.22’) -> 1.22 就没错可以指定转换的基数
parseInt(string, radix) || parseFloat(string, radix) parseInt('011', 8) -> 9
<不同点>:
如果第一个字符不是数字或者负号,parseInt返回NaN
特殊的:<b style="color:green">parseInt('') -> NaN </b> parseInt('js121') -> NaN
如果第一个字符不是数字、负号或者. ,parseFloat返回NaN
parseFloat('.11') -> 0.11
2.parseFloat忽略前导零和后面的0
parseFloat('011.1000') -> 11.1
先写这么多,再补充