TIL3: Arrow Function/'this' Keyword


Arrow FutionはES 6に導入された新しい方法であり,従来の関数式を簡略化した形で示した.エンクロージャ関数を表す場合に特に優れています.
// 일반적인 함수 표현식
const add = function (x, y) {
  return x + y;
};
// 화살표 함수
const add = (x, y) => {
  return x + y;
};
// 함수 내의 statement가 한줄일 경우 {}, ; 생략 가능 => return만 있는 경우 return 까지 생략 가능
const add = (x, y) => x + y;
// 파라미터가 한 개일 경우 () 생략 가능
// 함수내 statement의 명확한 표현을 위해 () 사용 가능 
const adder3 = x => (x + 3);
矢印関数には、次の重要な機能があります.
  • call、apply、bind(関数の方法)は使用できません.
  • 矢印関数の実行は、このオブジェクトを特定しません.
  • thisは、関数実行時呼び出し方法によって決定される特殊なオブジェクトである.すなわち、thisオブジェクトは、関数を実行するコンテキストおよび方法に依存する.
    関数の実行に関連するこの決定モードには、次の5つがあります.
    (1)グローバルリファレンス:ウィンドウオブジェクト(Browser)/module.exportsオブジェクト(node.js)
    console.log(this);
    (2)Function呼び出し:ウィンドウオブジェクト(Browser)/グローバルオブジェクト(Node.js)
    foo();
    (3)メソッド呼び出し:親オブジェクト(メソッド左側が「.」の左側オブジェクトに対して)
    obj.foo();
    (4)「new」キーワードを使用してジェネレータを呼び出す:作成したインスタンスオブジェクト
    new Foo();
    (5)callまたはapply呼び出し:最初のパラメータとして渡されるオブジェクト
    foo.call()
    foo.apply()
    コードおよびリソースソース:コードステータス