これを実現する 1 つのトリックは、クロージャを使用して、関数が 1 回だけ実行されるようにすることです。
var myFunction = (function () {
var neverCalled = true;
return function (arg, arg2, arg3) { //Any args for myFunction should be set here
if(neverCalled) {
neverCalled = false;
//Put your function code here.
return true; //or whatever
}
return false; //or do nothing, or whatever
};
}());
したがって、関数が「宣言」されると、すぐに外側の関数が評価され、 に設定neverCalled
されtrue
、内側の関数 (これは一度だけ実行する関数になります) がmyFunction
変数に返されます (または、あなたの場合は、それが必要です)。populatePayPlan
私が思う変数になる)。
初めて を呼び出すmyFunction
と実行されますが、 に設定さneverCalled
れfalse
ます。関数の後続の実行は、ブロックをスキップし、何もしません。これは、JavaScript のファーストクラスの関数とクロージャーの側面を利用するシンプルで気の利いたトリックであり、ユーザーのニーズに対応する必要があります。
アップデート:
実行方法は次のとおりです(上記のサンプルコードを変更したことに注意してください):
myFunction(); //is true;
myFunction(); //is false;
myFunction(); //is false;
アクセスできる場所で宣言し、必要になるまで呼び出さないでください。それが役立つことを願っています!