ホームページ >ウェブフロントエンド >jsチュートリアル >JS のクロージャに関する簡単な説明_基礎知識

JS のクロージャに関する簡単な説明_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:24:411020ブラウズ

( ⊙o⊙ )! ! !公式すぎて初心者には意味が分かりません!しかし、好奇心旺盛な初心者として、「クロージャ」とは何なのかを本当に知りたいのです。そこで私はついに伝説の「ドゥ・ニアン」を助けてくれることを見つけました!まだ少しは理解できました!

個人的な意見: 関数本体に別のメソッド関数を定義し、このメソッド関数が関数外の変数から参照されると、クロージャが形成されます。

おそらく、この理解は抽象的すぎて、それほど単純で理解しやすいものではありません。例:

コードをコピー コードは次のとおりです:


上記のコードはクロージャを作成します。これは、関数が var C=A(); に対して実行されると、C が関数 A を指しているように見えますが、実際には C が指している関数は関数 B であるためです。 () を実行すると 2 が出力されます; この場合、関数 B は関数 A 以外の変数から参照されています。 個人的な意見に基づいてクロージャを作成します。

クロージャについて少し勉強したときに、クロージャの用途についても調べてみました。 クロージャには主に次の 2 つの用途があると言われています。

1. 関数内の変数を読み取ることができます

2. これらの変数を常にメモリ内に保持します

コードをコピー コードは次のとおりです:


上記のコードでは、C は依然として関数 B を指します。C は 2 回実行され、最初の出力は 1 です。2 番目の出力は 2 です。これは、S がメモリに保存されており、A 関数が呼び出された後に自動的にクリアされないことを示しています。これは、B 関数が a に割り当てられているためです。この結果、関数 B は常にメモリ内にあり、関数 B の実行は関数 A に依存する必要があるため、A は常にメモリ内にあり、呼び出しの完了後にリサイクルされません。 (この理解は少し専門的ではないようです)!
表現が完成しました。アドバイスをお願いします!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。