此代码中的封闭词法范围在哪里?



我不明白为什么调用logout方法会记录窗口对象,而该方法的父级是对象用户。注销方法的父级是用户。

let user = {
name:'Jess',
age:17,
logout:()=>{
console.log(this);
}
};
user.logout()

您正在使用箭头函数捕获this。与此比较:

let user = {
name: 'Jess',
age: 17,
logout: function() {
console.log(this);
}
};
user.logout()

"this的值由函数的调用方式(运行时绑定(决定。它不能在执行期间通过赋值设置,并且每次调用函数时它可能会有所不同。ES5 引入了bind()方法来设置函数的值 this,而不管它是如何调用的,ES2015 引入了不提供自己的this绑定的箭头函数(它保留了封闭词法上下文的 this 值(。 此 MDN 网络文档

"箭头函数不会将其绑定到调用它们的对象。他们只是在定义它们的范围内使用此值。在本例中,这是全局对象。因此,箭头函数不适用于对象方法。箭头函数的优点和缺点

最新更新