箭頭函式 () => {}
簡短的語法
一般使用箭頭函式與 function 的用法大致一致,可以傳入參數、也有大括號包起來,
除此之外箭頭函式也有更簡短的寫法如下:
1 | // 正常寫法 |
注意
不過這個上述有個小地方也要注意一下,在大括號內的 {} 是需要自行加入 return,
如果沒有傳入值則會出現 undefined。
1 | var callSomeone = (someone) => { someone + '上工了' } |
綁定的 this 不同
口訣:箭頭函式裡面的this 等於 外面的this
白話文:箭頭函式裡的this 主要是依據 外層函式(function)裡的this 是什麼就跟著是什麼。
規則
1 | function x(){ |
範例
callName 是使用 一般函式
callName2 是使用 箭頭函式
1 | var name = '全域阿婆' |
補充:
因為 callName2 的 4 使用箭頭函式,所以 依據外層函式的this 的規則,就指向最外層window。
因為 callName2 的 4 使用箭頭函式,所以 依據外層函式的this 的規則,就指向最外層window。
沒有 arguments 參數
注意:箭頭函數裡沒有argument物件,可使用 其餘參數(Rest Operator) 替代
1 | const other = (...others) => others; |
apply, call, bind 無效
this 在 Arrow function 中是被綁定的,所以套用 apply, call, bind 的方法時是無法修改 this。
不能用在建構式
由於 this 的是在物件下建立,所以箭頭函式不能像 function 一樣作為建構式的函式,
如果嘗試使用此方法則會出現錯誤 (… is not a constructor)。