0

ボタンを押したときに実行する関数があります。
ユーザーに関数を 2 回続けて実行させたくありません。そこで、window変数を使用しました。
やった:

function a() {  
  if(window.infunction != undefined || window.infunction != null) {  
       return;  
  }  
  window.infunction = 'true';    
  //do stuff  
}  

別の場所で(別のボタンを押して)リセットしました: window.infunction = undefined

これはグローバル変数を使用する適切な方法ですか (少なくとも私のニーズでは)?

4

3 に答える 3

3

関数はオブジェクトです。他のオブジェクトと同様にプロパティを持つことができます:

function a(){
    if (a.executed) return;
    a.executed = true;

    //do stuff
}

@Ian が彼のコメントで述べたように、関数を簡単に再利用可能にすることができます。これは、このアプローチの利点であると同時に欠点でもあります。

そして@Daveが言ったように、クロージャーで達成できます:

var a = (function (){
    var executed = false;

    return function (){
        if (executed) return;
        executed = true;

        //do stuff
    }
})(); 
于 2013-06-03T21:06:03.173 に答える