上一篇文章讲解了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函数接收的参数 第一个参数:要转换的字符串 第二个参数:转换的进制位
上述输出结果为 1,NaN 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