Javascript arrow函数的性能和内存占用

Javascript arrow函数的性能和内存占用,javascript,ecmascript-6,Javascript,Ecmascript 6,在ES6中,javascript提供了箭头函数的使用,如: var quadr= x => x * x; 我知道这会影响this,参数,super和new.target的绑定 这对于确保每个范围内的This都正确非常有用。但我怀疑绑定是否会影响脚本的内存占用。执行上下文中的对象是否较少?这会影响功能的性能吗? 当我们在箭头函数中引用this时会发生什么(作为内存和分配),比如: function person(){ this.age=0; //it's my birthday s

在ES6中,javascript提供了箭头函数的使用,如:

var quadr= x => x * x;
我知道这会影响
this
参数
super
new.target的绑定

这对于确保每个范围内的
This
都正确非常有用。但我怀疑绑定是否会影响脚本的内存占用。执行上下文中的对象是否较少?这会影响功能的性能吗?
当我们在箭头函数中引用
this
时会发生什么(作为内存和分配),比如:

function person(){
  this.age=0;
  //it's my birthday so...
  ()=>{
     this.age++;
  }
}
当我们在arrow函数中引用this时会发生什么(作为内存和分配)

无论何时调用函数,都会创建一个词法环境,该环境引用了定义该函数的词法环境。想象一下:

function a(){
  function b(){
  }
  b.call(bContext)
}
a()
词法环境有一个指向当前上下文(也称为this)的值,以及对其封闭词法环境的引用。因此,如果调用内部函数,环境将如下所示(伪代码):

假设b是一个箭头函数:

function a(){
  b=()=>{};
  b();
}
然后,它将完全没有上下文,它将在a的环境中查找:

a{
  this:window//
}
b{
 parent:a
 }

因此,箭头函数实际上比常规函数更轻量级。

不必在意。这就足够了。几乎所有的要求都取决于浏览器的实现。在我看来,由于绑定可能类似于使用Anonymous.bind(这个)或者类似的东西,但它不应该阻止您使用它,因为当您需要一个恒定的执行上下文时,它会为您带来很多麻烦。它是一个闭包,并且会像任何其他闭包一样执行。在您调用函数之前,既没有词法环境,也没有
值。您可以修改示例脚本以反映这一点吗?
this:null
与no
this
不同all@Bergi好的,editedI的意思是你应该给你的例子添加一些
a()
b()
调用,这样
这个
在例子中也有一些确定的值,而不是“窗口或其他什么”
a{
  this:window//
}
b{
 parent:a
 }