为了账号安全,请及时绑定邮箱和手机立即绑定

向箭头函数添加花括号会提高性能吗?

向箭头函数添加花括号会提高性能吗?

慕姐8265434 2021-06-18 17:00:47
我说的是不需要退货的情况。例如:let pos = {'x': 1, 'y': 1}; ['x', 'y'].forEach((val) => pos[val] = 2);我很好奇这个隐式返回是否会影响 forEach 的性能?如果我们添加花括号(因此函数停止返回表达式的结果),它会影响性能吗?
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

即使在非常非常大的阵列上,它也不会产生您可以检测到的差异。但是如果你好奇,你总是可以在你关心的 JavaScript 引擎上分析它并使用你的真实代码(因为合成代码给出合成结果)。

在规范术语中,评估以 a 完成return(包括箭头的隐式返回)与仅“脱离”代码结尾的函数代码会导致两种不同类型的完成,然后调用该函数的过程会区分返回以及不undefined退货情况下的不退货和耗材。forEach的代码当然不使用结果,但理论上在 JavaScript 引擎中可能有不同的代码路径来到达那里,所以理论上它们的性能可能略有不同。

但在实践中,我认为您可以放心地假设 JavaScript 引擎对此进行了很好的优化,并且差异并不明显。

一般来说,不要提前优化。当给定代码段出现性能问题时,响应给定代码段的性能问题。(也就是说,我完全理解抽象地对这类事情感兴趣......)

只是为了好玩,我做了一个jsPerf,在 Chrome (V8) 或 Firefox (SpiderMonkey) 上的综合测试中没有看到任何显着差异:

//img1.sycdn.imooc.com//60d4573900013b0c08120455.jpg

但同样,综合测试会给出综合结果。


查看完整回答
反对 回复 2021-06-24
?
MMTTMM

TA贡献1869条经验 获得超4个赞

与大多数性能问题一样,正确的答案是对其进行测量。

正如在jsPerf看到的,差异是微乎其微的,并且肯定会被其他东西所抵消,例如forEach的开销

当然,实际上,这种规模的任何差异都是不明显的。

//img1.sycdn.imooc.com//60d4574c000108a414090934.jpg

查看完整回答
反对 回复 2021-06-24
  • 2 回答
  • 0 关注
  • 185 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信