私は現在、クロージャがどのようなもので、どのように機能しているかを見ています。クロージャを見るためには、基本的にサブオブジェクト、つまり親オブジェクトの一部または子です。JavaScriptのクロージャをサブオブジェクトのように動作させることができますか?
クロージャは、別の関数内に存在する関数であり、これは、この関数が親関数の他のものと同様に、親関数によって返されることを意味します。
関数を返す際の問題は、親オブジェクトのスコープ内で作成されているため、スコープ内の特定のリソースへのアクセスが必要な場合があるためです。
何かが関数(つまりオブジェクト)から参照渡しされた場合、コード内に参照が残っていない限り、それを削除することはできません。
ガベージコレクションが発生すると、メモリに残っているものを調べ、不要なものはマークされ、効果的に削除され、メモリスペースが解放されます。コード、内部変数、親変数、パラメータなど(関数が必要とする範囲内のもの)のように、クロージャが必要とするものはすべてそこに残されます。これらのものがもはや必要なくなったら、後でいつでもガベージコレクタによってマークされ削除されます。
基本的にクロージャは、返された関数とそのスコープから必要なものを含むサブオブジェクトであり、残りのオブジェクトは参照/必要がないため削除されます。最後に、ある時点で、コードがもはやサブオブジェクト/クロージャを必要としなくなると、それは効果的に参照されないとマークされ、メモリから除去される。
これはおおよそ/概念的に正しいと思いますか?
この質問は、コンピュータサイエンスの交換により適している可能性があります。https://cs.stackexchange.com/ – ControlAltDel