1. 犀牛前端部落首页
  2. Javascript百科

['1', '2', '3'].map(parseInt) what & why ?

第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是[1, NaN, NaN]。

map函数

首先让我们回顾一下,map函数的第一个参数callback:

var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg])

这个callback一共可以接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该元素的索引。

parseInt函数

parseInt 基数是一个介于2和36之间的整数。

parseInt(string, radix)
//接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。

模拟情况

了解这两个函数后,我们可以模拟一下运行情况。

parseInt('1', 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1
parseInt('2', 1) //基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN
parseInt('3', 2) //基数为2(2进制)表示的数中,最大值小于3,所以无法解析,返回NaN

map函数返回的是一个数组,所以最后结果为[1, NaN, NaN]

原创文章,作者:犀牛前端部落,如若转载,请注明出处:https://www.pipipi.net/2737.html

发表评论

登录后才能评论