1

问题是如果它是第一次运行,我需要中断该功能是否有任何可用的功能,或者我必须执行以下操作?

var times = 1

function abc () {
    if (times == 1)
      break;
    else
      .....
    times++;
} 

times = 0; 

谢谢。

4

5 回答 5

3

您可以使用此模式:

function abc() {

    if (!abc.flag) {
        abc.flag = true;
        return;
    }

    // .. rest of the code
}

它基于 Function 也是 Javascript 中的对象这一事实。

基本上这是一种记忆模式。它的缺点是该flag属性可以被另一个代码覆盖。优点是您不需要使用其他变量污染全局范围。

thg435提出了更优雅的解决方案。

于 2013-03-13T10:51:57.127 回答
2

在我看来,您试图在错误的地方解决问题。你能告诉我们整个故事吗?

与此同时,这样的事情应该可以解决问题:

function abc() {
    abc = function() {
         // ...actual work...
    }
}

详细信息取决于您的函数的定义方式(全局、本地、作为方法)。

于 2013-03-13T10:55:20.907 回答
0
var isFirstTime = true;

function abc () {
    if (isFirstTime)
    {
        isFirstTime = false;
        return;
    }
    .....
} 


abc(); //returns
abc(); //runs
于 2013-03-13T10:49:48.727 回答
0
    var firstTime= true

    function abc () {
        if (firstTime)
        {
              firstTime = false;
              return;
        }

        else
        {
          .....
        }

     } 
于 2013-03-13T10:50:33.673 回答
0

试试这个 :

var times = 1;

function abc () {
if (times == 1){}     
else{
  .....
times == 0;}
}
于 2013-03-13T11:13:49.400 回答