函数内部的if语句内的函数

时间:2015-03-15 07:17:30

标签: javascript

我目前有以下代码:

function someFunctionThatRunsOnce(identifier){
    if (var < 1){
        runSomeOtherFunction(identifier);
        var++;
    }
}

当var&lt;时,变量不会增加1是真的。它保持在0并且不会增加。当我移动关于runSomeOtherFunction()的变量增量语句时,它可以正常工作。

我想知道的是: 1)为什么会这样?为什么运行第二个函数来禁用增量? 2)有更好的方法吗?在一组非常具体的情况下,我需要以这种方式运行这个函数一次。运行的函数在别处使用不同的参数(标识符)。

请保持简单我是一个超级菜鸟,不知道jQuery,只是简单地使用JS。

1 个答案:

答案 0 :(得分:0)

一个很大的问题是“var”不是有效的变量名,它是一个保留的关键字。

您可以轻松地使用您的包装器作为命名空间来存储被调用的状态:

function someFunctionThatRunsOnce(identifier){
    if (!someFunctionThatRunsOnce.spent){ //not run yet?
        someFunctionThatRunsOnce.spent=true; //set as run
        runSomeOtherFunction(identifier); //run real workload
    }
}

这可以避免全局变量,并且可以减少runSomeOtherFunction()意外更改耗尽跟踪器属性状态的可能性。