我说的是不需要退货的情况。例如: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) 上的综合测试中没有看到任何显着差异:
但同样,综合测试会给出综合结果。
添加回答
举报
0/150
提交
取消