FunctionとArrow Functionの違い


Function


一般的な関数のthisには、常に自分を最後のscopeに変える特徴があります.
function callFunc(){
  return {
    foo : 25,
    bar : function(){
      console.log(this.foo);
    }
  }
}

callFunc.call({foo:100}).bar(); // 25

Arrow Function


Arrow Functionは、匿名関数で宣言するようにコードを簡潔に記述することができる.
普通()=>{}の様子です.thisとargumentsはバインドされません.
function callFunc(){
  return {
    foo : 25,
    bar : () => {
      console.log(this.foo);
    }
  }
}

callFunc.call({foo:100}).bar(); // 100
矢印関数では、thisはcallFuncのthisに従います.
つまり、現在の環境の要件を満たすには、矢印関数を使用します.