我目前有以下代码:
function someFunctionThatRunsOnce(identifier){
if (var < 1){
runSomeOtherFunction(identifier);
var++;
}
}
当var&lt;时,变量不会增加1是真的。它保持在0并且不会增加。当我移动关于runSomeOtherFunction()的变量增量语句时,它可以正常工作。
我想知道的是: 1)为什么会这样?为什么运行第二个函数来禁用增量? 2)有更好的方法吗?在一组非常具体的情况下,我需要以这种方式运行这个函数一次。运行的函数在别处使用不同的参数(标识符)。
请保持简单我是一个超级菜鸟,不知道jQuery,只是简单地使用JS。
答案 0 :(得分:0)
一个很大的问题是“var”不是有效的变量名,它是一个保留的关键字。
您可以轻松地使用您的包装器作为命名空间来存储被调用的状态:
function someFunctionThatRunsOnce(identifier){
if (!someFunctionThatRunsOnce.spent){ //not run yet?
someFunctionThatRunsOnce.spent=true; //set as run
runSomeOtherFunction(identifier); //run real workload
}
}
这可以避免全局变量,并且可以减少runSomeOtherFunction()意外更改耗尽跟踪器属性状态的可能性。