Javascript 箭头函数是否比类似的常规(匿名)函数性能更好?

Javascript 箭头函数是否比类似的常规(匿名)函数性能更好?,javascript,arrow-functions,Javascript,Arrow Functions,根据: arrow函数表达式是正则函数表达式的一种语法紧凑的替代方法,尽管它没有自己对this、arguments、super或new.target关键字的绑定 据推测,不绑定比绑定更有效 arrow函数如何比类似的常规匿名函数性能更好 。两者都是函数类型,性能差异可以忽略不计。如果您需要引用此函数,并且箭头函数从外部范围公开此函数,则性能更高,因此不需要执行let that=this;谢南根: 设obj={ 计数:1, 剂量:功能{ 这个,伯爵++ }, 更快:功能{ 设置超时=>{ 这是一件

根据:

arrow函数表达式是正则函数表达式的一种语法紧凑的替代方法,尽管它没有自己对this、arguments、super或new.target关键字的绑定

据推测,不绑定比绑定更有效

arrow函数如何比类似的常规匿名函数性能更好


。两者都是函数类型,性能差异可以忽略不计。

如果您需要引用此函数,并且箭头函数从外部范围公开此函数,则性能更高,因此不需要执行let that=this;谢南根:

设obj={ 计数:1, 剂量:功能{ 这个,伯爵++ }, 更快:功能{ 设置超时=>{ 这是一件好事; }, 1000; }, 慢:功能{ 让那=这; setTimeoutfunction{ 那是什么; }, 1000; }, };
我的假设是没有根据的。基于以下计时,创建arrow函数的性能并不比创建常规匿名函数更好

正则匿名函数

平均值=14783.202±30.705 ms

箭头函数


平均值=14788.446±27.802 ms

为什么“肯定”或“推测”?这似乎是在问一系列原因来解释基准,除了基准不存在。想必,什么都不做比什么都不做要快。引用是对函数类型行为差异的描述,这并不是说非箭头函数需要实现为箭头函数加上绑定东西的几个开销步骤。如果在函数中不使用任何这些东西,则引擎无需区分箭头函数和非箭头函数,除非它们的调用方式不同。我从未想过非箭头函数需要作为箭头函数实现。相关:
let f;
for (let I = 0; I < 10; ++I) {
    console.time();
    for (let i = 0; i < 1000000000; ++i) f = function (x) {return x;};
    console.timeEnd();
}
[Debug] default: 14665.279ms
[Debug] default: 14716.809ms
[Debug] default: 14640.227ms
[Debug] default: 14786.576ms
[Debug] default: 14748.089ms
[Debug] default: 14785.006ms
[Debug] default: 14795.267ms
[Debug] default: 14861.353ms
[Debug] default: 14878.316ms
[Debug] default: 14955.095ms
let f;
for (let I = 0; I < 10; ++I) {
    console.time();
    for (let i = 0; i < 1000000000; ++i) f = (x) => {return x;};
    console.timeEnd();
}
[Debug] default: 14683.146ms
[Debug] default: 14772.154ms
[Debug] default: 14756.878ms
[Debug] default: 14667.755ms
[Debug] default: 14729.087ms
[Debug] default: 14770.861ms
[Debug] default: 14808.871ms
[Debug] default: 14865.292ms
[Debug] default: 14901.789ms
[Debug] default: 14928.623ms