JS - クロージャとは
3299 ワード
私について:
こんにちは、私の名前はオーウェン・ボアハムです.ほとんどの人は私をユーザー名で呼んでいます...「Bobrossrtx」.これを投稿している時点で、私は 15 歳の 10 代で、コンピューター サイエンスの大学への入学を希望しています.とにかく、私についてはそれで十分です.閉鎖について話しましょう...
まとめ
この記事では、クロージャーとは何か、いつ使用するかについて説明します.この知識のすべての功績は、彼のウェブサイト here で確認できます.
閉鎖
クロージャーは、グローバル スコープから変数にアクセスする JavaScript 関数です.たとえば、...
// Lexical environment
let myVar = "Hello World";
// Function
function hello() {
console.log(myVar); // Captures the myVar variable
}
hello()
コード内の関数を呼び出すために、JS インタープリターは、関数自体と、関数が依存する周囲の環境からのその他のデータについて知る必要があります.
たとえば、それ自体の引数のみに依存する純粋な関数を考えてみましょう.
// No external data
function pureFunc(a, b) {
return a + b;
}
ここにあるのは、完全に自己完結型の閉じた式です.呼び出されると、それが実行されるコール スタックにプッシュされ、その内部データ (引数) は、コール スタックからポップバックされるまでメモリに保持されます.
しかし、その関数が、グローバル環境や外部関数など、それ自体のスコープ外からデータを参照する場合はどうなるでしょうか.
// Parent scope
let b = 3; // free variable
// This is a Closure
function impureFunc(a) {
// Function scope
return a + b; // Captures `b` variable
}
これにより、環境から他の自由変数を参照するオープン式が残ります.インタープリターがこの関数を呼び出し、これらの自由変数の値を知るために、ヒープに格納するクロージャーを作成します.これは、後でアクセスできるメモリ内の場所です.寿命が短い呼び出しスタックとは異なり、ヒープはデータを無期限に保持し、必要がなくなったときにガベージ コレクターを使用してそのデータを削除することを決定できます.
したがって、クロージャーは単なる関数ではなく、外部の状態またはレキシカル環境と組み合わされた関数です.クロージャーは、純粋な関数よりも多くのメモリと処理能力を必要としますが、それらを使用する多くの実際的な理由に気付くでしょう.
ソーシャル
ツイッター:
ユーチューブ:
メディア: @bobrossrtx
開発者:
ギットハブ: @bobrossrtx
Reference
この問題について(JS - クロージャとは), 我々は、より多くの情報をここで見つけました https://dev.to/bobrossrtx/js-what-are-closures-3coeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol