流動関数


Currying refers to transforming functions with multiple arguments into a function accepting a single argument at a time.通常、関数は、次の引数を唯一のパラメータとして受け取る別の関数を返します.
これは初心者が理解するのが難しいことが多い.高次関数の理解から始めましょう.

高次関数
他の多くの言語とは異なり、JavaScriptは、関数として別の関数を取ることができます.また、結果として関数を返すこともできます.A function which takes another function as a parameter or that which returns another function is a higher order function.
パラメータとして別の関数をとる関数

let sayHi = function(sayBye) {
    sayBye();
    alert("Hi !!");
}

let sayBye = function() {
    alert("Bye !!");
}

sayHi(sayBye);
アラートが求められる順序を予測できますか?
上の例では.sayhi ()は高次関数です.

パラメータとして別の関数を返す関数

let sayBye = function(name) {
    return function() {
    return "Bye "+ name + " !";
  }
}

alert(sayBye("Raj"));

alert(sayBye("Raj")());

あなたは上記の2つのアラートの出力を予測できますか?
SaybEye ()は、他の関数を返すため、上位関数です.
一度高次の機能と良いですが、あなたは理解を理解するための準備ができています.つの数字を追加する簡単な例を試してみましょう.
通常のメソッド-関数は
let add = function(a,b) {
    return a+b;
}

let result = add(10,12);
alert(result);

EG 2 : Currencyメソッド-関数は、1つのパラメータだけを受け入れます

let add = function (a) {
  return function (b) {
    return a + b;
  };
};

let result = add(10)(12);
alert(result);

add ( 10 )関数を返します.
function (b) {
    return a + b;
};
上記の関数の場合、12をパラメータとして渡すと、結果として22が得られます.
上の例では、これらの呼び出しはいずれも単一のステートメントで行われます.
let result = add(10)(12);
私たちは数のパワーを見つける関数のために、お金を試してみましょう.
カバレッジなしで

  • let power = function (power, number) {
      let product = 1;
      for (let i = 1; i <= power; i++) {
        product *= number;
      }
      return product;
    };
    
    alert(power(3, 2));
    
    カラシング付き

  • let power = function (power) {
      return function (number) {
        let product = 1;
        for (let i = 1; i <= power; i++) {
          product *= number;
        }
        return product;
      };
    };
    
    let cube = power(3);
    
    alert(cube(2));
    alert(cube(3));
    
    これはあなたがCurryingを理解するのを助けた望み!Curryingで楽しみを続けてください!