ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で 1 回だけ実行される関数を作成するにはどうすればよいですか?

JavaScript で 1 回だけ実行される関数を作成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-22 23:32:29781ブラウズ

How Can I Create a Function in JavaScript That Executes Only Once?

一度だけ実行可能な 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 サイトの他の関連記事を参照してください。

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