前端知库

普通函数和箭头函数的 this 有什么区别?

从调用方式与词法绑定解释 this,而不是只记规则。

参考答案

普通函数的 this 通常由调用方式决定:obj.fn() 指向 obj;call、apply 或 bind 可以指定接收者。严格模式下独立调用函数时,this 是 undefined。

箭头函数没有自己的 this,它从外层词法作用域取得 this,不能通过 call、apply、bind 改变这个绑定,也不能作为构造函数使用。

JavaScript
const obj = {
  value: 42,
  read() { return this.value; }
};
obj.read(); // 输出:42

把方法赋给变量后独立调用,会丢失原来的方法调用接收者。需要保留接收者时,可使用 bind 或包装函数。