ホームページ > ウェブフロントエンド > jsチュートリアル > javascript createAdder関数の機能と使い方_javascriptスキル

javascript createAdder関数の機能と使い方_javascriptスキル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-05-16 18:25:42
オリジナル
1195 人が閲覧しました
和文訳
createAdder(x) は関数を返す関数です。 JavaScript では、関数はファーストクラスのオブジェクトです。関数は引数として他の関数に渡したり、関数から返すこともできます。この場合、返される関数自体は、引数を受け取り、それに何かを追加する関数です。

ここに魔法があります。createAdder() によって返される関数はクロージャです。それはそれが作成された環境を「記憶」します。 createAdder に整数 3 を渡すと、引数に 3 を加算する関数が返されます。 4 を渡すと、4 を加算する関数が返されます。上の例の addThree 関数と addFour 関数はこの方法で作成されます。

addLoadEvent 関数をもう一度見てみましょう。ページの読み込み後に実行したいコールバック関数を引数として受け取ります。次の 2 つのケースがあります。最初のケースでは、window.onload にはまだ関数が割り当てられていないため、関数は単にコールバックを window.onload に割り当てます。 2 番目のケースは、クロージャが登場する場合です。window.onload にはすでに何かが割り当てられています。この事前に割り当てられた関数は、最初に oldonload という変数に保存されます。次に、最初に oldonload を実行し、次に新しいコールバック関数を実行する新しい関数が作成されます。この新しい関数は window.onload に割り当てられます。クロージャの魔法の性質のおかげで、クロージャは最初の onload 関数が何であったかを「記憶」します。さらに、addLoadEvent 関数をさまざまな引数で複数回呼び出すことができ、関数のチェーンが構築され、追加したコールバックの数に関係なく、ページの読み込み時にすべてが確実に実行されます。

クロージャは非常に強力な言語機能ですが、慣れるまでに時間がかかる場合があります。ウィキペディアのこの記事では、より詳細な内容が説明されています。

中国語翻訳: より良い可用言があります。大まかに言って違いはありません

createAdder(x) は 1 つの関数であり、1 つの関数を返します。JavaScript では、関数は最初のタイプのオブジェクト: さらに、それらはパラメータおよび関数リターンとして他の関数に渡される可能性があります。この場合、関数リターン自体が 1 つのパラメータを受け取る関数となり、いくつかのパラメータが追加されます。これは魔法です。createAdder によって返される関数() は、1 つのパケットです。つまり、createAdder 整数 3 が渡された場合、関数が返され、そのパラメータに 3 が加算されます。

でわかるように、星光大道は addLoadEvent 機能をもう一度確認できます。これには、一度実行する必要があります。次の 2 つのケースがあります。最初のケースでは、window.onload でいずれかの関数が割り当てられていないため、関数は window.onload で個別に割り当てられます。これは、以前に割り当てられた機能であり、最初に古い onload という名前で保存され、その後、新しい再調整が実行されます。この新しい機能は、window.onload に割り当てられます。神奇な封じ込めの感覚は、非推奨の最初の onload 機能を覚えていてください。

トーク機能は非常に高機能ですが、適用されるまでにある程度の時間がかかる可能性があります。


核心代コード

function createAdder(x) {
return function(y) {
return y x;
}
}
addThree = createAdder(3);
addFour = createAdder(4);
document.write('10 3 は ' addThree(10) '
');
document.write('10 4 は ' addFour(10));
document.write('-10 4 は ' addFour(-10));



演示代:


[Ctrl A 全选注:如く必要取入外部Js必要刷新才能执行]
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート