词汇范围绑定(价值)

箭头函数是词法范围的 ; 这意味着他们的 this 绑定绑定到周围范围的上下文。也就是说,无论 this 指的是什么,都可以通过使用箭头函数来保存。

看一下下面的例子。Cow 类有一种方法可以让它在 1 秒后打印出它所发出的声音。

class Cow {

  constructor() {
    this.sound = "moo";
  }

  makeSoundLater() {
    setTimeout(() => console.log(this.sound), 1000);
  }
}

const betsy = new Cow();

betsy.makeSoundLater();

makeSoundLater() 方法中,this 上下文指的是 Cow 对象的当前实例,因此在我称之为 betsy.makeSoundLater() 的情况下,this 上下文指的是 betsy

通过使用箭头函数,我保留 this 上下文,以便我可以在打印出来时引用 this.sound,这将正确地打印出 moo

如果你使用常规函数代替箭头函数,则会丢失在类中的上下文,并且无法直接访问 sound 属性。