箭頭函數和普通函數的區別?
1.外形不同:箭頭函數使用箭頭定義,普通函數中沒有
2.箭頭函數都是匿名函數
3.箭頭函數不能用於構造函數,不能使用new**
4.箭頭函數中this的指向不同
(1)在普通函數中,this總是指向調用它的對象,如果用作構造函數,this指向創建的對象實例。
(2)箭頭函數本身沒有this,箭頭函數的 this 永遠指向其上下文的 this ,任何方法都改變不了其指向,如 call() , bind() , apply()
5.其他區別
(1)箭頭函數不能用作Generator函數,不能使用yeild關鍵字。
(2)箭頭函數不具有prototype原型對象。
(3)箭頭函數不具有super。
(4)箭頭函數不具有new.target。
(5)箭頭函數不能使用arguments對象。
注意:this一旦被捕獲,就不再發生變化
箭頭函數有什么優缺點?
優點:寫法很簡潔,不用再定義this
缺點:this指向會難以閱讀