1// 正常寫法,在大括號內的 {} 是需要自行加入 return,如果沒有傳入值則會出現 undefined。
var callSomeone = (someone) => {
  return someone + '吃飯了'
}
console.log(callSomeone('小明'))

2// 縮寫,單一行陳述不需要 {}
var callSomeone = (someone) => someone + '吃飯了'
console.log(callSomeone('小明'))

3// 只有一個參數可以不加括號
var callSomeone = someone => someone + '吃飯了'
console.log(callSomeone('小明'))

4// 沒有參數時,一定要有括號
var callSomeone = () => '小明' + '吃飯了'
console.log(callSomeone('小明'))
  • 不能用在建構式/apply/call/bind/Dom/arguments

  • 物件縮寫形式的函式也是屬於 function,所以依然能夠產生作用域。

  • 綁定的 this 不同,傳統與箭頭

1.傳統函式:

  • 依呼叫的方法而定

  • 一般函式在建立時是在 window 下,所以在 window 下使用箭頭函式自然會指向 window,

  • 要確實將箭頭函式宣告在物件內部,這樣this才會指向該物件

  • 在寫物件內的函式時,為了確保 this 能夠正確運作會先將它賦予在另一個變數上 (that, self, vm…)

2.箭頭函式:

  • 綁定到其定義時所在的物件
  • 箭頭fun一般會指向window
  • 箭頭fun是在物件底下,箭頭函式會是使用它所在的物件
  • 箭頭函式本就會指向他所生成的物件上,所以可以不需要另外指向另一個物件。
  • 如果 不是 建立在物件內的函式,並不會影響箭頭函示的 this
  • this在 Arrow function 中是被綁定的,
  • Prototype 中使用 this,如果原型上新增一個箭頭函式,並嘗試使用 this 的話會指向全域。
  • 箭頭函數會自動將 this 變數綁定到其定義時所在的物件 或window 或 定義的環境
  • ex1.在物件裡的傳統fun(物件內)裡面的箭頭函式this會指向(物件內)
  • ex2.在物件裡的箭頭函示(window)裡面的箭頭函示會指向(Window)
  • 物件底下的注意,如果使用箭頭函式,this 依然指向 windows
  • this是指向所建立的物件上,如果是用在監聽 DOM 上一樣會指向 window
  • Arrow fun 沒有自己的this,他會延續外層的this

////////

導入es6原因
1.是因為原本的fun接到第二層會跑掉
2.用箭頭會保留第一層的this .箭頭不會有自己的this,會沿用外面的this

results matching ""

    No results matching ""