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

一度だけ実行される関数を JavaScript で構築するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-22 23:14:291039ブラウズ

How to Build a Function in JavaScript That Executes Only Once?

一度だけ実行できる関数を JavaScript で作成する方法

JavaScript は本質的に、一度だけ実行できる関数を作成する方法を提供しません。一度実行します。ただし、クロージャとサードパーティ ライブラリを使用した洗練されたソリューションがあります。

クロージャ メソッド:

クロージャは、クロージャに含まれる関数からアクセスできるプライベート スコープを作成します。 。この範囲内で、関数が実行されたかどうかを示すフラグを設定できます。次のコードは、このアプローチを示しています。

<code class="javascript">var something = (function() {
    var executed = false;
    return function() {
        if (!executed) {
            executed = true;
            // do something
        }
    };
})();</code>

初めて something() を呼び出すと、関数が呼び出され、実行された設定が true に設定されます。後続の呼び出しは、executed が true のままであるため、効果がありません。

サードパーティ ライブラリ メソッド:

Underscore や Ramda などのライブラリは、指定された関数をラップする Once() 関数を提供します。

<code class="javascript">// Using Underscore
var one_something = _.once(something);

// Using Ramda
const one_something = R.once(something);</code>

返された関数は複数回呼び出すことができますが、基になる関数は初回のみ実行されます。

関数を作成するためのユーティリティ-Time 関数:

ライブラリを使用していない場合は、カスタム ユーティリティ関数を作成できます。 1 つのアプローチは次のとおりです。

<code class="javascript">function once(fn, context) { 
    var result;
    return function() { 
        if (fn) {
            result = fn.apply(context || this, arguments);
            fn = null;
        }
        return result;
    };
}</code>

この関数は関数と、オプションでコンテキストを受け入れます。最初の呼び出しで元の関数を実行し、結果を返す関数を返します。それ以降の呼び出しは効果がありません。

以上が一度だけ実行される関数を JavaScript で構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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