js parseInt()函数的使用

js yekong 30℃

parseInt()函数用于解析一个字符串,并返回指定的基数对应的整数值。

语法

parseInt(string, radix);

string表示要被解析的值,如果该参数不是一个字符串,那么会使用toString()函数将其转换成字符串,而字符串前面的空白符会被忽略。

radix表示的是进制转换的基数,数据范围是2~36,可以是使用频率比较高的二进制、十进制、八进制和十六进制等,默认值为10。

parseInt()函数会返回字符串解析后的整数值,如果该字符串无法转换成Number类型,则会返回“NaN”。

非字符串类型转换为字符串类型

如果遇到传入的参数是非字符串类型的情况,则需要将其优先转换成字符串类型,即使传入的是整型数据。

parseInt('0x12', 16);  // 18
直接将字符串"0x12"转换为十六进制数,得到的结果为1×16+2=18;
parseInt(0x12, 16);    // 24
先转换成十进制数18,然后转换成字符串"18",再将字符串"18"转换成十六进制数,得到的结果为1×16+8=24。

数据截取的前置匹配原则

parseInt()函数在做转换时,对于传入的字符串会采用前置匹配的原则。即从字符串的第一个字符开始匹配,如果处于基数指定的范围,则保留并继续往后匹配满足条件的字符,直到某个字符不满足基数指定的数据范围,则从该字符开始,舍弃后面的全部字符。在获取到满足条件的字符后,将这些字符转换为整数。

parseInt("fg123", 16);  // 15

对于字符串'fg123',首先从第一个字符开始,'f'是满足十六进制的数据,因为十六进制数据范围是0~9,a~f(A~F),所以保留'f';然后是第二个字符'g',它不满足十六进制数据范围,因此从第二个字符至最后一个字符全部舍弃,最终字符串只保留字符'f';然后将字符'f'转换成十六进制的数据,为15,因此最后返回的结果为“15”。

如果遇到的字符串是以"0x"开头的,那么在按照十六进制处理时,会计算后面满足条件的字符串;如果按照十进制处理,则会直接返回“0”。

parseInt('0x12',16);   // 18 = 16 + 2
parseInt('0x12',10);   // 0

包含字符e的不同数据的处理差异

传入的参数本身就是Number类型时,会将e按照科学计数法计算后转换成字符串,然后按照对应的基数转换得到最终的结果。

传入的字符串中直接包含e,那么并不会按照科学计数法处理,而是会判断字符e是否处在可处理的进制范围内,如果不在则直接忽略,如果在则转换成对应的进制数。

parseInt(6e3, 10);     // 6000
parseInt(6e3, 16);      // 24576
parseInt('6e3', 10);    // 6
parseInt('6e3', 16);     // 1763

对浮点型数的处理

传入的值是浮点型数,则会忽略小数点及后面的数,直接取整。

parseInt('6.01', 10); // 6
parseInt('6.99', 10); // 6

笔记内容来自于书籍 JavaScrint 重难点实例精讲

喜欢 (0)