Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ES6箭头功能是否会提高性能?_Javascript_Performance_Ecmascript 6_Arrow Functions - Fatal编程技术网

Javascript 使用ES6箭头功能是否会提高性能?

Javascript 使用ES6箭头功能是否会提高性能?,javascript,performance,ecmascript-6,arrow-functions,Javascript,Performance,Ecmascript 6,Arrow Functions,ES6中新的arrow函数类似于一行函数,它使代码更加简洁明了,还允许您将调用方的作用域保留在函数中,这样您就不需要执行var\u this=this,或使用绑定功能等 与普通javascript函数相比,使用ES6 arrow函数是否有显著的性能提升 请记住,这个问题不可能有一个通用的答案,因为所有这些都取决于实现。因此,答案可能是现在的X或某些浏览器,将来的Y或其他浏览器 这些规定说,以下是一些数据:。对于目前和主要浏览器,答案是否定的,甚至可能会有性能损失(根据上述规定)。ES6箭头函数的

ES6中新的arrow函数类似于一行函数,它使代码更加简洁明了,还允许您将调用方的作用域保留在函数中,这样您就不需要执行
var\u this=this,或使用
绑定
功能等


与普通javascript函数相比,使用ES6 arrow函数是否有显著的性能提升

请记住,这个问题不可能有一个通用的答案,因为所有这些都取决于实现。因此,答案可能是现在的X或某些浏览器,将来的Y或其他浏览器


这些规定说,以下是一些数据:。对于目前和主要浏览器,答案是否定的,甚至可能会有性能损失(根据上述规定)。

ES6箭头函数的速度要快得多,因为它们不会创建额外的作用域。但它们不能访问在其作用域之外声明的变量,否则它们的性能将降低到低于正常函数的性能。

相反:“箭头函数速度较慢”

从理论上看(并非特定于JavaScript),lambda(箭头函数)是匿名的,因此它们“通常”是在堆上运行时计算的

这意味着编译器可能无法“内联”对这些lambda的调用。与正常的自由纯函数相比,这会降低lambda的性能,后者具有更高的内联几率

在堆上也会给垃圾收集器带来压力。请参阅,这解释了箭头函数较慢的原因

基准测试示例

arrow方法分别比class方法和free函数慢10%和60%


该标准没有为两者的速度设置任何先决条件。所以这完全取决于实现。在水下,可能会有一些性能差异,你可以尝试通过构建一个原型来测试它。也许如果你问一个具体的实现(可能是chrome?),我们可以想出一个更好的答案,我想问一下chrome或者更具体地说是V8,因为这是一个用于nodejsry搜索箭头函数的一些基准的工具。举几个例子:或者试着做你自己的,如果你发现有什么有趣的事情,就汇报。粗略地看,性能差异似乎很小,但是使用箭头函数和绑定会更好(基于JS env的ymmv-我在chrome aka V8上)如何?访问外部作用域的常规函数与访问外部作用域的箭头函数之间有什么区别?我认为在实践中没有太多的性能优势,但我认为Code Whisper指的是不需要分配一些通常分配给函数的东西(例如,“this”和“arguments”)@你能详细说明一下吗?“访问在其作用域之外声明的变量”如何降低arrow函数的性能?