使用ES6,javascript提供了箭头功能的使用,如:
var quadr= x => x * x;
我知道这会影响this
,arguments
,super
和new.target
的绑定。 source
这对确保每个范围内的this
都是有用的。但我在质疑绑定是否会影响脚本的内存占用。执行上下文中的对象是否较少?这是否会影响功能的性能?
当我们在箭头函数中引用this
时会发生什么(内存和分配),例如:
function person(){
this.age=0;
//it's my birthday so...
()=>{
this.age++;
}
}
答案 0 :(得分:1)
当我们在箭头函数中引用它时会发生什么(内存和分配)?
每当调用一个函数时,都会创建一个词汇环境,它引用了定义它的词法环境。想象一下:
a{
this:window
}
b{
parent:a
this:bContext
}
词汇环境有一个指向当前上下文的值(也就是这个),以及它们封闭的词汇环境的引用。因此,如果内部函数被调用,则环境看起来像这样(伪代码):
function a(){
b=()=>{};
b();
}
让我们假设b将是一个箭头函数:
a{
this:window//
}
b{
parent:a
}
然后根本就没有上下文,它将在一个环境中查找:
sin()
因此,箭头函数实际上比普通函数更轻量级。