ES6 箭頭函式this指向問題

2021-08-11 14:23:06 字數 664 閱讀 6615

1.箭頭函式語法

var a = b => c
2.箭頭函式this

通過乙個例子:

var obj=,

test:function()

settimeout(()=>

this.func();

},1);}}

obj.test

();

上面的**輸出結果為undefined。自上而下三次console.log(this)的返回值 以此是 window、obj、obj。

關於箭頭函式,從阮一峰的es6一書中可以總結出兩點:

箭頭函式是沒有this物件的。

箭頭函式的this,就是在定義箭頭函式時,函式所在的物件。

也就是說箭頭函式中的this實際上是將定義時函式所在物件中的this「拿過來了」。就像是乙個全域性變數可以在函式內部使用一樣,箭頭函式中的this就像這個全域性變數。

當呼叫obj.test()時,this.func();的這個this就是test函式中的this。而test函式中的this指向的是在呼叫時的物件。這個物件就是obj。執行到func時, console.log(this.a);中的這個this是指向window的,window中沒有a這個變數,所以最後的結果是undefined。

ES6箭頭函式this指向

普通函式中的this 1.this總是代表它的直接呼叫者 js的this是執行上下文 例如 obj.func 那麼func中的this就是obj 2.在預設情況 非嚴格模式下,未使用 use strict 沒找到直接呼叫者,則this指的是 window 約定俗成 3.在嚴格模式下,沒有直接呼叫者的...

ES6 箭頭函式及this指向詳解

箭頭函式相當於匿名函式,箭頭函式簡化了函式的定義,比函式表示式更簡潔,並且沒有自己的this,arguments。基礎語法 引數1,引數2,高階語法 箭頭函式的 this 箭頭函式沒有自己的 this,箭頭函式的 this 在定義函式的時候繫結,而不是在執行函式的時候繫結。html btn1 普通函...

es6箭頭函式this問題

最近做vue的專案,發現中用了很多es6中的新特性,隨後開始惡補es6,發現箭頭函式這一簡潔的函式寫法,不過還是感覺不習慣,箭頭函式的格式 有引數 var foo n console.log n var foo function n 沒有引數 var foo 1 var foo function 多...