1.書寫上的區別
箭頭函數比普通函數更加的簡潔,而且在一定程度上可以簡寫,比如,括號裏面只有一個參數,括號可以省略, 另外如果函數體中只有一行代碼,花括號也可以省略。
2.參數上的區別
普通函數的參數是 arguments,而箭頭函數的的是 args
3.this 指向的不同
- 箭頭函數的 this 指向上層函數作用域的 this 對象,如果沒有上層函數作用域,則指向頂部 this(在瀏覽器中頂部 this 則是 window)。普通函數的this指向該函數的調用者。
- call, apply, bind 會改變普通函數的 this,但不會改變箭頭函數的 this
4.原型和構造函數的問題
箭頭函數不能使用 new 生成實例,因爲箭頭函數沒有 prototype,而 construct 在 prototype 裏面
5.對es6使用的限制
箭頭函數內不能用 yield 且不能用作 Generator 函數,而普通函數可以。