一、parseInfo 的 作用
parseInt()函数可以将字符串转换成一个整数;
直接说明:
1、当(被执行的参数(字符串),以下统称为'参数') 参数首位字符不是数字字符或者负号,parseInt()就会返回NaN
2、如果第一个字符是负号或者数字字符,函数parseInt()会继续解析第二个字符,直到解析完后续字符或者遇到非数字字符结束
3、如果字符串以 ' 0x ' 开头,那parseInt() 将会将其当作一个16进制整数
4、如果字符串以”0”开头且后跟数字字符,就会将其当作一个八进制整数。
5、parseInt()函数增加了第二参数用于指定转换时使用的基数(即多少进制)。
6、当parseInt()函数所解析的是浮点数字符串时,取整操作所使用的方法为“向下取整”。
二、案例分析
consle.log(parseInt('a12456')); //NaN
consle.log(parseInt('1a2b3c')); //1
consle.log(parseInt('0.001')); //0
consle.log(parseInt('0.0000001')); //0
consle.log(parseInt(0.0000001)); //1
consle.log(parseInt(0.2222221)); //4886718345
consle.log(parseInt(0x123)); // 83
console.log(parseInt(10000000)); //10000000
console.log(parseInt(10000000000000000000000000000)); //1
console.log(parseInt(NaN)); //NaN
console.log(parseInt(null)); //NaN
console.log(parseInt(undefined)); //NaN
根据parseInfo 的 作用,很多例子我们都理解,不多解释,下面拿出特殊案例做下分析
console.log(parseInt(0.0000001)) // 1
按上面作用,这里不应该是 0 吗? 为什么会打印 1,这里使用到了另一个知识点 科学记数法
科学记数法
科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。
例如 1980000 = 1.98x10^6 = 1.98e+6 (计算器或电脑表达10的幂是一般是用E或e)
在 ECMAScript 规范中 Number.prototype.toString 方法和 Number.prototype.toPrecision 方法中都有提到当 Number 被转化为 String 时,满足以下条件将会被处理为科学记数法
- 当一个 数字number 被转为为科学记数法后,number = a*E^n 满足
n <= -6
或者21 < n
时,会将结果转换为科学记数法的字符串表达式
console.log(String(1000000000000000000000)); // 1e+21
console.log(1*Math.pow(10, 21));
console.log(String(1980000000000000000000)); // 1.98e+21
console.log(String(19800000)); // 19800000
console.log(String(1.0000001)); //1.0000001 (a 为 分数)
console.log(String(0.0000001)); // 1e-7
console.log(1.98e+6); //1980000
1000000000000000000000 = 1*Math.pow(10, 21) = 1e+21
0.0000001 = 1*Math.pow(10, -7) = 1e-7
在使用parseInt() 方法时,参数首先会转换成字符串,案例中 0.0000001 和 100000000000000000000 满足 n <= -6 n > 21 ,所以被处理成为科学计数法,那么
// parseInt(0.0000001) 等同于 parseInt(String(0.0000001))
console.log(parseInt(0.0000001)) //1
console.log(String(0.0000001)); //1e-7
console.log(parseInt('1e-7')); // 1
又补充的请于评论区一起讨论学习