function add (x) {
return function (y) {
return x + y;
};
}
var add5 = add(5);
var no8 = add5(3);
alert(no8); // Returns 8
誰かが私に何か説明してもらえますか?y?どのように関数の最初の呼び出しを追加するは5を返しますか? yまたは何を無視しますか?このadd(x)関数はどのように機能しますか?
function add (x) {
return function (y) {
return x + y;
};
}
var add5 = add(5);
var no8 = add5(3);
alert(no8); // Returns 8
誰かが私に何か説明してもらえますか?y?どのように関数の最初の呼び出しを追加するは5を返しますか? yまたは何を無視しますか?このadd(x)関数はどのように機能しますか?
それはクロージャと呼ばれています。あなたは「あなたはJSを知らない - 適用範囲&クロージャ」をチェックアウトする必要がありカイル・シンプソンによって、特に第5章
https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch5.md
これはクロージャと呼ばれています。つまり、ネスト機能で状態を維持できます。
この場合、最初の手順では5をadd()
に渡して、状態(渡された番号)を保存し、その番号を使用している関数を返します。内部関数は、最初の呼び出しが終了した後でもその番号を知っています。
ここで詳しく読むことができます。
https://developer.mozilla.org/en/docs/Web/JavaScript/Closures
最初の呼び出しを関数を返します。以前に質問されました。うまくいけば、誰かが詐欺を見つけるのに良い時間を持っていることを望みます。 – epascarello
関数 'add'は数字xをとり、1つの引数(' y'と指定する)を受け入れて 'x'に加える*関数*を返します。したがって、 'var add5 = add(5)'は引数に5を加える関数を返します。 'var no8 = add5(3)'は引数3でその関数を呼び出します。 – lurker