首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么箭头函数在for循环中的速度比全局函数快?

为什么箭头函数在for循环中的速度比全局函数快?
EN

Stack Overflow用户
提问于 2018-04-17 13:43:00
回答 1查看 166关注 0票数 2

我想测试在for循环中使用箭头函数是否比使用全局函数慢得多。令我惊讶的是,在所有经过测试的浏览器(Chrome、Edge、Firefox)中,for循环中的箭头函数比全局函数快5-10倍。

我创建了一个杰斯普夫

下面是初始循环:

代码语言:javascript
复制
  for(let i = 0; i <= N; ++i) {
     (i) => sum += i;
     (sum, i) => sum += i;
  }

我认为应该更快一点:

代码语言:javascript
复制
   for(let i = 0; i <= N; ++i) {
      add(i);
      addTwo(sum, i);
   }

其中add函数只是全局函数:

代码语言:javascript
复制
  function add(i) {
     return sum += i;
  }
  function addTwo(sum, i) {
     return sum += i;
  }

重复使用全局函数不应该比每次迭代创建箭头函数更快吗?

LE:测试代码是错误的,我实际上并没有调用箭头函数,现在我将其更新为:

代码语言:javascript
复制
   for(let i = 0; i <= N; ++i) {
      ((i) => sum += arr[i])();
      ((sum, i) => sum += arr[i])();
   }

现在看来,全局函数方法现在比预期的更快了( chrome上的x2,火狐上的x300,边缘上的x20 )。

EN

回答 1

Stack Overflow用户

发布于 2018-04-17 13:45:41

您不会在每次迭代中创建“新”箭头函数。当js解析您的脚本时,函数只设置一次,它只在每次迭代时创建一个闭包。但是,由于您不调用该函数,所以根本不需要闭包,而且for循环什么也不做,因此速度很快。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49879785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档