问题 使用ES6箭头功能是否有性能提升?


ES6中的新箭头功能就像单线程函数,它使代码更加简洁明了,并且还允许您将调用者的范围保持在函数内部,这样您就不需要像 var _this = this;,或使用 bind 功能等

使用ES6箭头函数比普通的javascript函数有任何显着的性能提升吗?


11713
2018-03-13 20:27


起源

该标准没有任何前提条件要求更快。所以这完全取决于实施。 - zerkms
在水下,可能会有一些性能差异,您可以尝试通过构建原型来测试它。 - CherryNerd
也许如果你问一个具体的实现(铬可能?),我们可以得到一个更好的答案,我会问铬或更具体的V8,因为这是用于nodejs的那个 - niceman
尝试谷歌搜索一些 jsperf 箭头功能的基准。一些例子: EX1  EX2 或尝试自己制作并报告,如果您发现任何有趣的内容。从粗略的看起来看起来性能差异很小,但是使用箭头函数vs bind会更好(ymmv基于JS env - 我在chrome aka V8) - Damon


答案:


请记住,对于这个问题不可能有一个普遍的答案,因为所有这些都是依赖于实现的。所以答案可能是 X 现在或与某些浏览器,可能是 ÿ 在将来或与其他浏览器。

这些规定说,这里有一些数据: http://www.incaseofstairs.com/2015/06/es6-feature-performance/ 。对于现在和主流浏览器,答案是肯定的 没有 甚至可能会有性能损失(根据上述规定)。


11
2018-04-04 07:26





ES6箭头功能要快得多,因为它们不会创建额外的范围。但是它们无法访问在其范围之外声明的变量,或者它们的性能会降低到低于正常函数的性能。


0
2017-11-30 05:01



怎么会这样?访问外部范围的常规函数​​与访问外部范围的箭头函数之间有什么区别? - Hkan
我不认为在实践中有如此多的性能优势,但我认为Code Whisperer指的是没有必要分配一些通常为函数分配的东西(例如,'this'和'arguments') - Erik Christianson