我正在嘗試了解箭頭功能。我知道,使用箭頭功能時,作用域有所不同。但是,我仍然對這一切的工作方式感到困惑。這是一個我不太了解的例子。// ES5var obj = { id: 42, counter: function counter() { setTimeout(function() { console.log(this.id); }.bind(this), 1000); }};現(xiàn)在,這里是完全相同的代碼塊,但使用了箭頭功能。// ES6var obj = { id: 42, counter: function counter() { setTimeout(() => { console.log(this.id); }, 1000); }};看著它,在我看來,這全都關(guān)乎水平。如果我錯了,請糾正我,但是在ES5中,我們將.bind()在這種情況下使用該方法,因為如果沒有它,它將返回未定義狀態(tài)。我認為這是因為在這種情況下,this關(guān)鍵字inconsole.log(this.id);指向該counter對象,默認情況下,它找不到id該obj對象的。有點令人困惑,但我認為僅此而已?,F(xiàn)在,使用箭頭功能,我不確定為什么console.log(this.id);會起作用。這是否意味著只要它在同一代碼塊中,就可以使用?
有人可以解釋箭頭功能嗎?(ES6)
慕桂英3389331
2021-04-01 10:11:50