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 に答える