介绍:
parseInt(string, radix)
定义:解析一个字符串 (如果不是字符串,将则将其转换为字符串) 并返回指定基数的十进制整数,radix 是 2-36 之间的整数,表示被解析字符串的基数。
工作原理:从左到右开始一个一个字符解析,直到解析完毕整个字符串 或 解析遇到非数值 或 解析遇到小数点 后 中止解析 并返回已经 解析的部分。
parseFloat(string)
定义:函数可解析一个字符串,并返回一个浮点数。
工作原理:从左到右开始一个一个字符解析,直到解析完毕整个字符串 或 解析遇到非数值 或 解析遇到了第二个小数点 后 中止解析 并返回已经 解析的部分。
Number(object)
定义:函数把 对象 的值转换为数字并返回。
工作原理:相比 parseInt 与 parseFloat,Number 是对整个对象进行解析 后 进行结果返回
举例:
// 整数 字符串
let param = '18';
console.log(parseInt(param)) // 18
console.log(parseFloat(param)) // 18
console.log(Number(param)) // 18
// 小数 字符串
let param = '18.2';
console.log(parseInt(param)) // 18
console.log(parseFloat(param)) // 18
console.log(Number(param)) // 18
// 整数前面带有0的 字符串
let param = '000018.2';
console.log(parseInt(param)) // 18
console.log(parseFloat(param)) // 18.2
console.log(Number(param)) // 18.2
// 空 字符串
let param = '';
console.log(parseInt(param)) // NaN
console.log(parseFloat(param)) // NaN
console.log(Number(param)) // 0
// 多个逗号 字符串
let param = '18.2.3';
console.log(parseInt(param)) // 18
console.log(parseFloat(param)) // 18.2
console.log(Number(param)) // NaN
// 数值后带有非数值 字符串
let param = '18px';
console.log(parseInt(param)) // 18
console.log(parseFloat(param)) // 18
console.log(Number(param)) // NaN
// 数值前带有非数值 字符串
let param = 'px18';
console.log(parseInt(param)) // NaN
console.log(parseFloat(param)) // NaN
console.log(Number(param)) // NaN
特殊情况:
// null
let param = null;
console.log(parseInt(param)) // NaN
console.log(parseFloat(param)) // NaN
console.log(Number(param)) // 0
// undefined
let param = undefined;
console.log(parseInt(param)) // NaN
console.log(parseFloat(param)) // NaN
console.log(Number(param)) // NaN
// Boolean
let param = true;
console.log(parseInt(param)) // NaN
console.log(parseFloat(param)) // NaN
console.log(Number(param)) // 1
// Boolean
let param = false;
console.log(parseInt(param)) // NaN
console.log(parseFloat(param)) // NaN
console.log(Number(param)) // 0
// Date
let param = new Date();
console.log(parseInt(param)) // NaN
console.log(parseFloat(param)) // NaN
console.log(Number(param)) // 1655278285053
// Array
let param = new [18];
console.log(parseInt(param)) // 18
console.log(parseFloat(param)) // 18
console.log(Number(param)) // 18
总结:
parseInt(string, radix)
举例:parseInt('100', 2) 那么100被作为2进制数被解析出 十进制整数。
- 如果传入 参数首位和末位是空格会被忽略。
- 如果传入 Array 会对角标为0的元素进行解析 返回 解析的结果。
- 如果 radix 小于2大于36 返回 NaN。
- 如果 radix 是 undefined、0 或未指定的情况。
- 如果输入的
string 以 0x 或 0X(一个 0,后面是小写或大写的 X)开头
,那么 radix 被假定为 16,字符串的其余部分被当做十六进制数去解析。 - 如果输入的
string 以 "0"(0)开头
,radix 被假定为 8(八进制)或 10(十进制)。具体选择哪一个 radix 取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。 - 如果输入的
string 以1 ~ 9开头
,radix 是 10 (十进制)。
- 如果输入的
parseFloat(string)
- 如果传入 包含 正号(+)、负号(-)、数字(0-9)、小数点(.)、或者科学记数法中的指数(e 或 E)以外的字符,则它会忽略该字符以及之后的所有字符,并返回已经 解析的部分。
- 如果传入 包含了第二个小数点的出现也会使解析停止。
- 如果传入 参数首位和末位是空格会被忽略。
- 如果传入 参数字符串的第一个字符不能被解析成为数字,则返回 NaN。
- 如果传入 Array 会对角标为0的元素进行解析 返回 解析的结果。
Number(object)
- 如果传入 Boolean 为 true 时 返回 1、Boolean 为 false 时 返回 0。
- 如果传入 undefined 返回 NaN。
- 如果传入 null 返回 0。
- 如果传入 Date 返回 毫秒数。
- 如果传入 Array
- 数组长度为1时,会对角标为0的元素进行转换为数字 ,并返回结果。
- 如果长度大于1时,返回 NaN。
- 如果传入 正常的数值 返回 传入的数值。
- 如果传入 对象的值无法转换为数字 返回 NaN。
- 如果传入 字符串
- 如果传入 空字符串 返回 0。
- 如果传入 字符串中包含有效的十六进制格式,例如"0xf",则将其他转换为相同大小的十进制整数值。
- 如果是字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即“1”变成1,“123”会变成123,而“011”会变成11(前导的零被忽略了)。
- 如果字符串中包含有效的浮点格式,如“1.1”,则将其转换为对应的浮点数值(同样也会忽略前导零)。
- 如果字符串中包含除上述格式之外的字符,则将其他转 返回 NaN。
如果帮助到你,不要吝啬你的小手,来个四连 点赞收藏+关注评论吧!