箭头功能的性能和内存占用

时间:2017-07-30 16:29:17

标签: javascript ecmascript-6

使用ES6,javascript提供了箭头功能的使用,如:

var quadr= x => x * x;

我知道这会影响thisargumentssupernew.target的绑定。 source

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

function person(){
  this.age=0;
  //it's my birthday so...
  ()=>{
     this.age++;
  }
}

1 个答案:

答案 0 :(得分:1)

  

当我们在箭头函数中引用它时会发生什么(内存和分配)?

每当调用一个函数时,都会创建一个词汇环境,它引用了定义它的词法环境。想象一下:

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

词汇环境有一个指向当前上下文的值(也就是这个),以及它们封闭的词汇环境的引用。因此,如果内部函数被调用,则环境看起来像这样(伪代码):

function a(){
  b=()=>{};
  b();
}

让我们假设b将是一个箭头函数:

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

然后根本就没有上下文,它将在一个环境中查找:

sin()

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