校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > js语言和框架 > 基本语法-if\show
题目

['1', '2', '3'].map(parseInt) 是什么?为什么?

解答

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

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

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

而parseInt则是用来解析字符串的,使字符串成为指定基数的整数。

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]



C 4条回复 评论
箱湘香樟树

大佬,可以转载吗?

发表于 2023-09-24 22:00:00
0 0
薄荷

1,nan,nan

发表于 2020-11-13 10:16:35
0 0
ludierr

结果:1, NaN, NaN
原因:map函数会传递三参数(数组元素,元素索引,原数组本身),但是parseInt只能接收前两个参数,即数组元素和元素索引,此语句最终解析为:
parseInt('1',0) //1
parseInt('2',1) //NaN
parseInt('3',2) //NaN

发表于 2020-11-13 10:10:38
0 1
天宫

[1,NaN,NaN]

map的第一个参数的函数的第二个形参对上了parseInt的第二个形参(基数)。

发表于 2020-11-13 09:24:20
0 0