parseInt 深度解析

136 阅读1分钟

上一篇文章讲解了parseInt 和Math.floor() 的不同,这篇文章主要通过一道题,来讲解parseInt的用法。

let nums = ['1','2'','3']

let newNums = nums.map(parseInt)

consloe.log(newNums)   //会输出什么呢?

首先介绍nums.map(parseInt)的执行过程 map函数会遍历数组的每一项,parseInt也是一个函数,他作为map函数的参数,每次遍历时,会将当前的数组元素以及下标传递给parseInt.

所以上述代码执行的过程时

parseInt('1',0) 

parseInt('2',1)

parseInt('3',2)

接下来介绍parseInt函数接收的参数 第一个参数:要转换的字符串 第二个参数:转换的进制位

上述输出结果为 1NaN NaN 

为什么会出现这种结果呢?

parseInt 的第二个参数范围时2~36 如果参数不写或者为零,将以10为基础进行解析,不在范围内并且不为零的 将返回NaN

parseInt('1',0) //等价于 parseInt('1',10)   所以输出 1 

parseInt('2',1) //由于第二个参数不在2~36 之间且不等于0  所以输出 NaN

parseInt('3',2)  //2进制只有0和1   所以不能转换 3   最终输出  NaN