1. Number类型介绍
- Number类型包括整型数据和浮点型数据
- 整型数据的最基本数值采用十进制整数,还可以通过八进制或十六进制表示
1.2 Number类型数据处理规则
1.2.1 八进制数据表示规则
- 首位必须是0,其他位必须是0~7的八进制序列
- 若后面位数的字面值大于7,则忽略前面的0,当作十进制数据处理
1.2.2 十六进制数据表示规则
- 前两位必须是0x,其他位必须是十六进制序列(0~9,a~f或A~F)
- 若超出十六进制序列,则抛出异常
1.3 Number类型与其他类型数据转换规则
1.3.1 Boolean类型转换为Number类型
原始值 | 转换值 |
---|---|
true | 1 |
false | 0 |
1.3.2 Null类型转换为Number类型
原始值 | 转换值 |
---|---|
null | 0 |
1.3.3 Undefined类型转换为Number类型
原始值 | 转换值 |
---|---|
undefined | NaN |
1.3.4 String类型转换为Number类型
原始值 | 转换值 |
---|---|
只包含数字的字符串 | 十进制数(前面有0会省略) |
包含有效浮点数的字符串 | 十进制转换数 |
包含有效的十六进制的字符串 | 十进制转换 |
空字符串“” ‘’ | 0 |
包含除上述格式外的字符串 | NaN |
1.3.5 Object类型转换为Number类型
原始值 | 转换值 |
---|---|
1. 调用valueOf()返回原始值,按照对应类型的规则进行转换; 2. 若转换为NaN,则调用toString(),再按照对象类型的规则进行转换; 3. 若有确定的Number类型返回值则返回; 4. 否则返回NaN。 | |
{ } | NaN |
2. Number类型转换
2.1 Number()函数
按照上述类型进行相应转换。
2.2 parseInt()函数
解析一个字符串并返回指定基数对应的整数值。
2.3 parseFloat()函数
解析一个字符串并返回对应的浮点数。
Number() | 转换整个值,不同于其他两个函数会从首位开始匹配符合条件的值,不能完全转换则返回“NaN” |
---|---|
parseInt() | 遇到小数点会停止解析,不同于parseFloat()将小数点当作有效字符 |
parseFloat() | 在解析时没有进制的概念,不同于parseInt()会依赖传入的基数做数值转换 |
3. isNaN()函数与Number.isNaN()函数对比
3.1 NaN
- NaN是Number类型中的特殊数值,目的是在某些异常情况下保证程序正常执行
- 任何涉及NaN的操作都会返回NaN
- NaN与任何值都不相等,包括它本身
3.2 两者对比
isNaN() | Number.isNaN() | |
---|---|---|
Number类型 | NaN为true | NaN为true |
非Number类型 | 先转换为数字,再判断 | false |