当使用箭头函数时,'this' 指向是词法作用域,而不是函数被调用时的作用域。这意味着箭头函数内部的 'this' 指向是在声明函数时就确定的,而不是在函数被调用时确定的。

具体来说,箭头函数的 'this' 指向是它定义时所在的作用域中的 'this',而不是它被调用时所在的作用域中的 'this'。因此,箭头函数内部的 'this' 指向通常是外部函数的 'this',或者是全局对象(在浏览器环境中为 'window' 对象)。

举个例子,假设有一个对象 'person',其中有一个方法 'sayHello':

const person = {
  name: 'John',

  sayHello() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

如果我们使用普通函数来调用 'sayHello' 方法,那么在该方法内部,'this' 会指向 'person' 对象:

person.sayHello(); // 输出:Hello, my name is John

但是如果我们使用箭头函数来定义 'sayHello' 方法,那么在该方法内部,'this' 会指向 'person' 对象所在的作用域中的 'this',也就是全局对象:

const person = {
  name: 'John',

  sayHello: () => {
    console.log(`Hello, my name is ${this.name}`);
  }
}

person.sayHello(); // 输出:Hello, my name is undefined

在上面的例子中,箭头函数内部的 'this' 指向全局对象,因此无法访问 'person' 对象的 'name' 属性,导致输出 'undefined'。


原文地址: https://www.cveoy.top/t/topic/mQll 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录