詞彙範圍繫結(價值)

箭頭函式是詞法範圍的 ; 這意味著他們的 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 屬性。