2013-03-13 46 views
1

问题是我需要在第一次运行时打破这个函数 有没有可用的函数,或者我需要做如下的事情?第一次在javascript/jquery中运行函数时没有做任何事情

var times = 1 

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

times = 0; 

谢谢。

+1

'break'将取消'for','while','做-while'和'之开关语句,但不是*功能*。改用'return'。 – jAndy 2013-03-13 10:51:07

回答

2

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

同时,这样的事情应该做的伎俩:

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

细节取决于你的函数是如何定义的(全局,局部,作为一种方法)。

+1

这是这种情况下最好的模式。 – dfsq 2013-03-13 10:58:41

+0

这没有任何意义。介意解释它是如何工作的?谢谢! – 2015-03-22 08:41:17

0
var isFirstTime = true; 

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


abc(); //returns 
abc(); //runs 
0
var firstTime= true 

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

     else 
     { 
      ..... 
     } 

    } 
3

您可以使用此模式:

function abc() { 

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

    // .. rest of the code 
} 

它是基于一个事实,即功能也是在Javascript对象。

基本上这是一个Memoization模式。它的缺点是flag属性可能被另一个代码覆盖。好处是你不需要用其他变量来污染全球范围。

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

+0

OP - 选择此答案! :) – Jace 2013-03-13 10:52:59

+0

@Jace不,这不是最好的答案。 thg435提出了适当的方法。 – dfsq 2013-03-13 11:15:08

+0

同意!尽管如此,你仍然可以保持高兴。 :) – Jace 2013-03-13 12:22:49

0

试试这个:

var times = 1; 

function abc() { 
if (times == 1){}  
else{ 
    ..... 
times == 0;} 
} 
相关问题