一度だけ実行可能な JavaScript 関数の作成
JavaScript では、関数の実行を 1 つのインスタンスに制限することが必要な場合があります。 C などの言語では静的変数を使用してこれを実現できますが、JavaScript ではクロージャを使用したより洗練されたソリューションが提供されます。
クロージャは、囲んでいるスコープが終了した後でもコンテキストを保持する関数であり、次のような関数を作成できます。は一度だけ呼び出すことができます。実行フラグをクロージャ内にカプセル化することで、フラグが永続的であり、外部コードからアクセスできないようにすることができます。
クロージャを使用して 1 回限りの実行可能関数を作成する例を次に示します。
<code class="javascript">var something = (function() { var executed = false; return function() { if (!executed) { executed = true; // do something } }; })(); something(); // "do something" happens something(); // nothing happens</code>
この関数は、後続の呼び出しにもかかわらず、クロージャ内で囲まれたコードが 1 回だけ実行されることを保証します。
あるいは、よりカプセル化されたアプローチを希望する場合は、以下のようなユーティリティ関数を利用できます。
<code class="javascript">function once(fn, context) { var result; return function() { if (fn) { result = fn.apply(context || this, arguments); fn = null; context = null; } return result; }; }</code>
使用法:
<code class="javascript">function something() { /* do something */ } var one_something = once(something); one_something(); // "do something" happens one_something(); // nothing happens</code>
このユーティリティ関数は、最初の呼び出しの結果をキャッシュし、それ以降の実行を無効にする関数を返します。
以上がJavaScript で 1 回だけ実行される関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。