箭頭函式的注意事項

2022-09-24 04:15:05 字數 778 閱讀 2928

1.箭頭函式中的this取決於函式的定義,而非呼叫:

function

a() a.call()

//function a(),100)//}

兩次呼叫都使用了call改變函式a的this指向,注釋**列印結果是window,而在箭頭函式內的列印結果是呼叫所傳入的物件。為啥呢?settimeout呼叫了內部函式,普通函式的this指向是取決於函式的呼叫物件,意思也就是誰呼叫,那麼this 就是誰,settimeout實際上是window.settimeout,所以注釋**列印結果是window;箭頭函式的this並不取決於函式的呼叫而是取決於函式的定義,上述**內的箭頭函式是在a的函式體內定義的,那麼箭頭函式的this=a的this,呼叫a時改變了a的this指向讓其=傳入物件,所以在箭頭函式內的列印結果是呼叫所傳入的物件;(感覺好像有點繞  qaq)

2.箭頭函式不可以new,這個好理解,因為他不是建構函式,所以不能new;

3.箭頭函式不可以使用arguments獲取引數列表,可以使用rest代替:

let name=(...rest) =>

function

a() a(1,2,3,4,5);

name(1,2,3,4,5,6);

在箭頭函式內使用arguments會報未定義,這裡rest是形參,可以自定義的,這樣也是可以的

let name=(...a) =>

好了,以上就是個人在學習箭頭函式時總結的,大神輕噴   *(੭*ˊᵕˋ)੭*

函式的注意事項

1 函式的形參列表可以是多個,返回值列表也可以是多個。2 形參列表和返回值列表的資料型別可以是值型別和引用型別 3 函式的命名遵循識別符號命名規範,首字母不能是數字,首字母大寫該函式可以被本報檔案和其它包檔案使用,類似public,首字母小寫,只能被本包使用,其它包檔案不能使用,類似private ...

inline函式注意事項

1.在類中定義這種函式 class classname 如果在類中直接定義,不需要用inline修飾,編譯器自動化為 內聯函式 此說法在 c primer 中提及 2.在類外定義前加inline 關鍵字 class account 與1相同 double getbalance 在類中宣告 doubl...

memset函式注意事項

memset 函式是記憶體賦值函式,用來給某一塊記憶體空間進行賦值的。其原型是 void memset void dst,int val,size t size 使用時在檔案頭加上 include stdlib.h dst是目標起始位址,val是要賦的值,size是要賦值的位元組數。例1 char ...