ホームページ >ウェブフロントエンド >jsチュートリアル >クロージャの適用シナリオは何ですか?

クロージャの適用シナリオは何ですか?

hzc
hzcオリジナル
2020-06-28 13:47:138387ブラウズ

クロージャ アプリケーションのシナリオには次が含まれます: 1. 関数参照を使用した SetTimeout 呼び出し; 2. グローバル変数を小さいスコープで置き換える; 3. プライベート変数およびプライベート関数にアクセスできるパブリック メソッド。

クロージャの適用シナリオは何ですか?

関数内のローカル変数には関数外からアクセスできませんが、関数内の関数はこの関数内のローカル変数にアクセスできるため、関数への外部アクセスは可能です。これは、関数内のローカル変数のクロージャーによって実現されます。ただし、メモリ リークが発生しやすいため、使用には注意が必要です。

クロージャの使用シナリオ:

1]、関数参照メソッドを使用した setTimeout 呼び出し

setTimeout の最初のパラメータは通常、対象となる関数です。実行されると、2 番目のパラメータは遅延時間になります。

コードの一部を setTimeout を通じて呼び出したい場合は、最初のパラメーターとして関数オブジェクトへの参照を渡す必要がありますが、この関数オブジェクトへの参照は、呼び出されるオブジェクトのパラメーターを提供できません。遅延。このとき、別の関数を呼び出して内部関数への呼び出しを返し、setTimeout関数に内部関数オブジェクトの参照を渡すことができ、内部関数実行時に必要なパラメータは外部関数呼び出し時に渡されます。 setTimeout は、内部関数の実行時に使用されます。内部関数は、外部関数の呼び出し時に指定されたパラメータの偽造を防ぐことができるため、パラメータを渡す必要はありません。

クロージャの適用シナリオは何ですか?

2]、グローバル変数の代わりに小さなスコープ

クロージャの適用シナリオは何ですか?

3]、プライベートにアクセスするための特権メソッド変数?

特権メソッド: プライベート変数およびプライベート関数にアクセスできるパブリック メソッド

プライベート変数には次のものが含まれます:

1)、ローカル変数

2) 関数のパラメータ

3) 関数内で定義されたその他の関数 (クロージャ)

クロージャの適用シナリオは何ですか?

上記コードのコンストラクタには 2 つが定義されています。 特権メソッド: getName()、setName()、これら 2 つのメソッドはオブジェクトを介してアクセスでき、どちらもプライベート変数名にアクセスできますが、Person コンストラクターの外部に名前にアクセスするメソッドはありません。これら 2 つのメソッドは関数内で定義されているため、スコープ チェーンを介してクロージャとしてアクセスできます。

以上がクロージャの適用シナリオは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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