箭頭函式和普通函式的this指向

2022-08-21 01:30:13 字數 1015 閱讀 4283

對於this的指向問題還是有點不太清除,這裡做一下整理,方便以後檢視

普通函式的this

1.普通函式的this指向的是它的呼叫者,誰呼叫這個this,,this就指向誰,比如obj,fn,這裡fn最外層的this就指向obj

2.如果沒有呼叫者,那這個this就指向window

3.在嚴格模式下(設定「use strict」),this為undefined

注釋:

1.call方法第乙個引數是要改變的this指向,後面傳入的是乙個引數列表。當第乙個引數為null或undefined的時候,預設指向window,比如test.call(this,"one","two","three")

箭頭函式的this

1.箭頭函式是es6新增的,通俗的講,它指向的是外層的this,如果外層仍為箭頭函式,則再指向外層,也就是說箭頭函式的this指向箭頭函式外面第乙個不是箭頭函式的那個函式的this。

下面是例項:

xixi是全域性函式,普通函式沒有人呼叫this的時候,指向window

使用了嚴格模式後this為undefined

第乙個this指向obj,而settimeout裡面的匿名函式沒有直接呼叫者,this指向window

如果我把settimeout裡面的普通函式,改成箭頭函式,裡面的this就指向它外層的this,就是obj

箭頭函式 普通函式

箭頭函式的語法比普通函式更簡潔,是乙個匿名函式,不能作為建構函式,且不能使用new 普通函式 letfun 普通函式 function fun 箭頭函式有兩種格式 一種是和return 另一種是把二者省略掉 1 1.不能使用newlet fun let fn newfun 1.function on...

箭頭函式和普通函式對比

let xx item item 單條語句可以省略return和 單個引數可以省略 let a let a new a 報錯 function a let a new a 不報錯arguments的一般使用場景是 允許傳入3個引數,中間乙個引數是可選。如果只傳1個參就是引數1用,傳入2個參就是引數1...

箭頭函式和普通函式的區別

面試時被問到箭頭函式和普通函式的區別。借用別人的乙個栗子 function make var testfunc make.call testfunc testfunc.call object object可以看到箭頭函式在定義之後,this 就不會發生改變了,無論用什麼樣的方式呼叫它,this 都不...