MDN定義:箭頭函數表達式的語法比函數表達式更簡潔,並且沒有自己的this,arguments,super或 new.target。這些函數表達式更適用於那些本來需要匿名函數的地方,並且它們不能用作構造函數。
與普通函數的區別:
1、表面上看,寫法更簡潔
2、沒有this,不會創建自己的this,它只會從自己的作用域鏈的上一層繼承this,無論是否嚴格模式。
3、沒有
arguments,箭頭函數不綁定Arguments 對象,在大多數情況下,使用剩餘參數是相較使用arguments
對象的更好選擇。
var f = (...args) => args[1];
4、不能用作構造器、構造函數,和 new
一起用會拋出錯誤。
5、箭頭函數全都是匿名函數
6、在參數和箭頭之間不能換行
7、雖然箭頭函數中的箭頭不是運算符,但箭頭函數具有與常規函數不同的特殊運算符優先級解析規則。性能更好。
以下是相同點:
8、同樣可以形成閉包
9、同樣可以遞歸
mdn傳送門:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions