JavaScript坑之一map参数传递

本文探讨了JavaScript中Array.map()方法使用时的一个常见陷阱,特别是当回调函数为parseInt时出现的问题,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

map()方法定义在JavaScript的Array中,他是一个高阶函数。我们向这个函数传入我们自己定义的回调函数(callback),然后map会对数组当中每一个元素去调用回调函数。

通常,我们只在回调函数里用一个参数,因为大多数回调函数只需要一个参数,或者一个必须参数和多个可选参数。这样的习惯会有时导致很诡异的行为。

['1', '2', '3'].map(parseInt); //[1, NaN, NaN]
我们所希望看到的结果其实是[1, 2, 3],原因是parseInt一般我们用的时候都是习惯性用一个参数,但他可以接收两个参数,第二个参数用来做基数。而map向回调函数传参有三个,数组中的元素,元素的下标和这个数组。第三个参数被parseInt忽略掉,前两个参数被接收。

parseInt('0', 0);  //基数为0,或者undefined,用10进制

parseInt('1', 1); //没有1进制,返回NaN

parseInt('2', 2); //二进制不能出现2,返回NaN

这里关键是要知道回调函数接收的参数有三个,那么如何解决上面的问题呢?

function myParseInt(intString){
    return parseInt(intString, 10);
}
['1', '2'].map(myParseInt);
或者,用更简单的写法

['1', '2'].map(str => parseInt(str));

或者,最简单的写法

['1', '2'].map(Number)




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值