JavaScript中Array.prototype.map使用的一个注意事项

本文探讨了JavaScript中Array.prototype.map方法的一个常见误解:当尝试使用不存在的数组元素时的行为。通过ECMA262-5规范解释了为何Array(10).map(...)返回空数组的原因。

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

首先看一段JS代码:

console.log(Array(10).map(function(){return "A"}));

有人会任务这行代码将输出10个A. 实际上它输出的是一个空数组,也就是说下面代码是成立的

Array(10).map(function(){return "A"}).join("") === ""

看上去map没有生效,针对这个原因找了一下Array.prototype.map在ECMA 262-5规范中的定义

"Array.prototype.map ( callbackfn [ , thisArg ] )callbackfn应该是个函数,它接受三个参数。 map 按照索引的升序,对数组里
存在的每个元素调用一次 callbackfn,并用结果构造一个新数组。 callbackfn 只
被实际存在的数组元素调用;它不会被缺少的数组元素调用。"

规定里面map只对存在的元素调用,而Array(10)中的元素其实尚未真实存在.所以才出现了上面的情况.
类似的还有其他一些Array.prototype上的函数也有类似问题,如forEach filter some every等.


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值