1. 箭頭函數(shù)比普通函數(shù)更加簡潔
如果沒有參數(shù),就直接寫一個空括號即可如果只有一個參數(shù),可以省去參數(shù)的括號如果有多個參數(shù),用逗號分割如果函數(shù)體的返回值只有一句,可以省略大括號如果函數(shù)體不需要返回值,且只有一句話,可以給這個語句前面加一個void關(guān)鍵字。最常見的就是調(diào)用一個函數(shù):
2. 箭頭函數(shù)沒有自己的this
箭頭函數(shù)不會創(chuàng)建自己的this, 所以它沒有自己的this,它只會在自己作用域的上一層繼承this。所以箭頭函數(shù)中this的指向在它在定義時已經(jīng)確定了,之后不會改變。
3. 箭頭函數(shù)繼承來的this指向永遠(yuǎn)不會改變
對象obj的方法b是使用箭頭函數(shù)定義的,這個函數(shù)中的this就永遠(yuǎn)指向它定義時所處的全局執(zhí)行環(huán)境中的this,即便這個函數(shù)是作為對象obj的方法調(diào)用,this依舊指向Window對象。需要注意,定義對象的大括號{}是無法形成一個單獨(dú)的執(zhí)行環(huán)境的,它依舊是處于全局執(zhí)行環(huán)境中。
4. call()、apply()、bind()等方法不能改變箭頭函數(shù)中this的指向
5. 箭頭函數(shù)不能作為構(gòu)造函數(shù)使用
構(gòu)造函數(shù)在new的步驟在上面已經(jīng)說過了,實(shí)際上第二步就是將函數(shù)中的this指向該對象。 但是由于箭頭函數(shù)時沒有自己的this的,且this指向外層的執(zhí)行環(huán)境,且不能改變指向,所以不能當(dāng)做構(gòu)造函數(shù)使用。
6. 箭頭函數(shù)沒有自己的arguments
箭頭函數(shù)沒有自己的arguments對象。在箭頭函數(shù)中訪問arguments實(shí)際上獲得的是它外層函數(shù)的arguments值。
7. 箭頭函數(shù)沒有prototype
8. 箭頭函數(shù)不能用作Generator函數(shù),不能使用yeild關(guān)鍵字