Javascript 如何使函数的一部分只执行一次,直到它';他可以不这样做
我如何反复调用javascript函数(Javascript 如何使函数的一部分只执行一次,直到它';他可以不这样做,javascript,function,Javascript,Function,我如何反复调用javascript函数(repeatedFunction()),但使其仅在repeatedFunction()第一次激活时才激活,比如说警报(“此函数是第一次执行”),但//其他代码始终处于激活状态?另外,如何使警报()允许再次激活,就像第一次执行repeatedFunction()一样?您可以设置一个标志。例如,您有以下代码: var flagAlertExecd = false; function repeatThis () { if (!flagAlertExecd)
repeatedFunction()
),但使其仅在repeatedFunction()
第一次激活时才激活,比如说警报(“此函数是第一次执行”)
,但//其他代码始终处于激活状态?另外,如何使警报()
允许再次激活,就像第一次执行repeatedFunction()
一样?您可以设置一个标志。例如,您有以下代码:
var flagAlertExecd = false;
function repeatThis () {
if (!flagAlertExecd) {
alert("Only once...");
flagAlertExecd = true;
}
// Repeating code.
}
要重复此代码,最好使用setInterval
setInterval(repeatThis, 1000);
函数是对象。如果愿意,您可以在函数上设置(稍后清除)标志:
function repeatedFunction() {
if (!repeatedFunction.suppress) {
alert("This function is being executed for the first time");
repeatedFunction.suppress = true;
}
// ...other code here...
}
当您想要重置该功能时,任何可以访问repeatedFunction
的代码都可以清除repeatedFunction。抑制标志:
repeatedFunction.suppress = false;
该标志不必在函数上,当然,您可以使用单独的变量
也就是说,我建议看一看大图,检查相关警报是否真的应该是函数的一部分。您可以通过在函数中声明一个变量并递增它来实现。使用if
语句,可以检查它被触发了多少次。代码:
var count = 0;
function myfunc(){
if(count==0){
alert("Triggering for the first time");
count++;
}
//Your always triggering code here
}
这甚至可以记录函数被触发的次数。如果您不想在第n次执行alert()
,它可能会很有用
也可以使用布尔值。像这样:
第二种方法不会跟踪函数被触发多少次的记录,它只会确定函数是否第一次被调用
这两种方法都适用于您的目的
JavaScript将适合此任务。它没有全局变量,将任务保存在单个函数中
var closureFunc=function(){
var numberOfCalls=0;
返回函数(){
如果(numberOfCalls==0)
{
console.log(“第一次运行”);
}
numberOfCalls++;
console.log(numberOfCalls);
};
};
var a=closureFunc()//0
a()//1.
a()//2.
var a=closureFunc()//将numberOfCalls丢弃到0
a()//1.
要重复一个函数,您可以始终使用setInterval(myFunction,毫秒)代码>这不会第一次执行始终执行的代码。再看看这个问题@Arjun我已经修复了错误您的解决方案似乎是最适合我的问题的解决方案!非常感谢。
var firstTime = true;
function myfunc(){
if(firstTime){
alert("Triggering for the first time");
firstTime = false;
}
//Your always triggering code here
}
var firstTime = true;
var myFunction = function() {
if(firstTime) {
alert("This function is being executed for the first time");
firstTime=false;
}else{
//whatever you want to do...
}
}; //firstTime will be true for the first time, after then it will be false
var milliseconds = 1000;
setInterval(myFunction, milliseconds);
//the setInterval means that myFunction is repeated every 1000 milliseconds, ie 1 second.