1. 箭頭函數不能當作構造函數,即不能使用new命令
2.箭頭函數要實現類似純函數的效果,必須剔除外部狀態。所以當你定義一個箭頭函數,在普通函數里常見的this
、arguments
、caller
是統統沒有的。
什么情況下該使用箭頭函數
《You Don’t Know JS》給出了一個決策圖:
- 箭頭函數適合於無復雜邏輯或者無副作用的純函數場景下,例如用在
map
、reduce
、filter
的回調函數定義中; - 不要在最外層定義箭頭函數,因為在函數內部操作
this
會很容易污染全局作用域。最起碼在箭頭函數外部包一層普通函數,將this
控制在可見的范圍內; - 如開頭所述,箭頭函數最吸引人的地方是簡潔。在有多層函數嵌套的情況下,箭頭函數的簡潔性並沒有很大的提升,反而影響了函數的作用范圍的識別度,這種情況不建議使用箭頭函數。