高次関数(9-11)


Achievement Goals


-一級オブジェクト(first-class citizer)の3つの特徴を説明できます.
  • の代表的な1つのレベルのオブジェクトは関数です.
    1.変数を割り当てることができる
    2.他の関数を渡すことができるパラメータ(パラメータ)(コールバック関数)
    3.他の関数の結果を返す
    4.オブジェクトの属性値
  • として格納可能な配列内の要素
    -高次関数(high-order function)について説明できます.

  • パラメータとして別の関数を受信します.
  • 関数doublenumはdoubleをパラメータとするので高次関数です.
  • doubleはコールバック関数(関数のパラメータとして)
  • である.
    function double(num) {
      return num * 2;
    }
    
    function doubleNum(func, num) {
      let doubledArr = [];
      return func(num);
    }
    
    
    
    let output = doubleNum(double, 4);
    console.log(output); // -> 8
  • 関数を返すと
  • になります.
  • 関数加算器は、別の関数を返す高次関数です.
  • 関数加算器は、パラメータを入力することによって匿名関数を返す.
  • 匿名関数は、パラメータを受信し、加算値と加算値を返します.
  • function adder(added) { // 1.(5)들어오면
      return function (num) { // 3.(3)들어오면
        return num + added; //2.(5)값 저장, 4.(3)값 연산하여 리턴.
      };
    }
    
    let output = adder(5)(3); // -> 8
    console.log(output); // -> 8
  • 1+2=パラメータとして関数を受け入れ、関数を返すと
  • となる.
  • 関数doubleAdderは高次関数です.
  • 関数doubleAdderのパラメータdouble関数はコールバック関数です.
  • 
    function double(num) {
      return num * 2;
    }
    
    function doubleAdder(added, func) {
      const doubled = func(added);
      return function (num) {
        return num + doubled;
      };
    }
    
    doubleAdder(5, double)(3); // -> 13