讓我們先講下箭頭函式的this指向,再在普通函式的例子中具體對比。
箭頭函式的this與誰呼叫無關,this指向執行上下文。執行上下文可以理解為當前**的執行環境。
箭頭函式本身所在的物件為obj,而obj的執行上下文是window,因此輸出的是20。
const obj =};
var a =20;
console.
log(obj.
add())
;// 20
let f = obj.add;
console.
log(f(
));// 20
指向它的直接呼叫者
第乙個輸出的呼叫者是obj,所以它輸出的是obj的a,為10.
第二個輸出的呼叫者沒有呼叫,直接f()執行。預設它的呼叫者是window,指代的是window的a,為undefined.
const obj =,}
;console.
log(obj.
add())
;// 10
let f = obj.add;
console.
log(f(
));// undefined
函式直接加括號執行,上下文是window。(因為obj.fun() 後,直接返回乙個函式。再執行返回的函式,相當於沒有呼叫者了,預設window呼叫)
let obj =}}
;//注: obj.fun()再呼叫的時候直接加括號,沒有打點呼叫
console.
log(obj.
fun()(
));//undefined
var a =5;
console.
log(obj.
fun()(
));//5
定時器呼叫函式,上下文是window
let obj =)}
};var a =20;
obj.fn(
)
箭頭函式 普通函式中的this指向
this指向在箭頭函式和普通函式中的表現是不同的。1 箭頭函式 首先要明白的是箭頭函式的this指標是固定的,就是箭頭函式被定義時其所在環境的物件 因為箭頭函式其實自己是沒有this指標的,其this指標是判定了其直接外層的函式的this指標 這裡說的是函式而不是物件,因為物件不直接形成單獨的作用域...
箭頭函式和普通函式的this指向
對於this的指向問題還是有點不太清除,這裡做一下整理,方便以後檢視 普通函式的this 1.普通函式的this指向的是它的呼叫者,誰呼叫這個this,this就指向誰,比如obj,fn,這裡fn最外層的this就指向obj 2.如果沒有呼叫者,那這個this就指向window 3.在嚴格模式下 設...
箭頭函式與普通函式以及this指向問題
沒有引數只有單條語句 var fun consoloe.log 1 fun 乙個引數單條語句,可以省略 var fun a console.log 1 a就是傳入的單個引數多個引數多條語句 var fun a,b 返回的是物件要加 var fun var b return 1 var b new b...