Stan Blog

學習過程中的一些記錄

[ES6] 箭頭函式(Arrow Function)

箭頭函式

  1. 語法比原有函式更簡單
  2. 提高程式碼可讀性
  3. 具有詞法上綁定 this 的特性

ex:

const func = (x) => x + 1 相當於 const func = function (x) { return x + 1 }

大括號 {}

如果函式有多行語句(表達式)時就要使用大括號,如 () => {} 使用大括號時,return 需要自己加,否則會 undefined

小括號 ()

只有單一個傳入參數時,可以不需前面作為傳入參數使用的小括號,例如 x => x * x

箭頭函式可以取代某些原先使用 self = this.bind(this) 的情境 函式物件中的 call、apply、bind 三個方法,無法覆蓋箭頭函式中的 this 值

箭頭函式與原有函式的差異

  1. 沒有定義本地端綁定(local bindings) 的以下幾個變數,也就是說這些變數將由 lexical(詞法的) 綁定: arguments, super, this, new.target
  2. 不能當作建構函式(constructor) 使用
  3. 原有函式: this 值是動態的,由呼叫這個函式的擁有者物件(Owner) 決定 箭頭函式: this 是 lexical(詞法的)作用域決定,也就是由週邊的作用域所決定
  4. 箭頭函數並不綁定 arguments object

不能使用箭頭函式的情況

  1. 用物件字面文字定義物件時,物件中的方法
  2. 在物件的prototype屬性中定義的方法
  3. DOM事件處理的監聽者(事件處理函式)
  4. 建構函式(constructor)


Ref:

Comments

comments powered by Disqus