实现这一点的一个技巧是使用闭包来确保函数只执行一次:
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;
只要确保在您可以访问它的地方声明它,并且在您需要它之前不要调用它。希望有帮助!