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