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