2.箭頭函數

根據追源溯本原則app

  • 箭頭函數有什麼優勢?
  • 解決了什麼問題?
  • 引入箭頭函數有兩個方面的做用:更簡短的函數而且不綁定this。





  • 在ECMAScript 3/5中,經過將this值分配給封閉的變量,能夠解決this問題。
  • 箭頭函數不會建立本身的this,它只會從本身的做用域鏈的上一層繼承this
  • 因爲 箭頭函數沒有本身的this指針,經過 call() 或 apply() 方法調用一個函數時,只能傳遞參數(不能綁定this),他們的第一個參數會被忽略, bind一樣
  • 箭頭函數不綁定Arguments 對象,在大多數狀況下,使用剩餘參數是相較使用arguments對象的更好選擇
  • 箭頭函數表達式對非方法函數是最合適的
  • 箭頭函數不能用做構造器,和 new一塊兒用會拋出錯誤
  • 箭頭函數沒有prototype屬性。
  • yield 關鍵字一般不能在箭頭函數中使用(除非是嵌套在容許使用的函數內)。所以,箭頭函數不能用做生成器。




箭頭函數表達式的語法比函數表達式更簡潔,而且沒有本身的this,arguments,super或 new.target。這些函數表達式更適用於那些原本須要匿名函數的地方,而且它們不能用做構造函數。函數

語法:this

(參數1, 參數2, …, 參數N) => { 函數聲明 }

//至關於:(參數1, 參數2, …, 參數N) =>{ return 表達式; }
(參數1, 參數2, …, 參數N) => 表達式(單一)

// 當只有一個參數時,圓括號是可選的:
(單一參數) => {函數聲明}
單一參數 => {函數聲明}

// 沒有參數的函數應該寫成一對圓括號。
() => {函數聲明}

//加括號的函數體返回對象字面表達式:
參數=> ({foo: bar})

//支持剩餘參數和默認參數
(參數1, 參數2, ...rest) => {函數聲明}
(參數1 = 默認值1,參數2, …, 參數N = 默認值N) => {函數聲明}

//一樣支持參數列表解構
let f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
f();  // 6
  • 參考MDN
相關文章
相關標籤/搜索