for、forEach、map的性能对比

 我来答
天然槑17
2022-07-04 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6550
采纳率:100%
帮助的人:37.8万
展开全部
说明一下:性能的比较实际上与环境使用的V8版本相关,这也是为什么map方法在chrome里比在Node中慢10倍,有人测试过(在chrome 62 和 Node.js v9.1.0环境下):for循环比forEach快1倍,forEach比map快20%左右。

for :for循环没有额外的函数调用栈和上下文,所以它的实现最为简单。

forEach :对于forEach来说,它的函数签名是这样的

其中包含了参数和上下文,这回影响它的性能。

map :map最慢的原因是因为map会返回一个新的数组,数组的创建和赋值会导致分配内存空间,因此会带来较大的性能开销。如果将 map 嵌套在一个循环中,便会带来更多不必要的内存消耗。

简单来说:
当你的循环不需要返回值(也不应该返回),不需要改变数据的时候(虽然允许callback改变),比如,你只是想借助这次遍历去做一些事情,那么就可以选择 forEach ;

当你需要改变数据值,或者需要链式调用的时候,那么就使用 map ;

虽然map确实可以实现某些你想要的操作,比如:

当它其实更适合 for 或 forEach 。
正如MDN中所描述的那样 Array.prototype.map() :

所以在有eslint的今天,尽量不要忽略任何一个 ~ 提示。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式