2014-02-07 42 views
-1

如何才能調用該功能一次?運行該功能時如何僅調用一次函數?

var myFunction = function() { 
    alert("calling function only for once"); 
    myFunction = function(){ 
     return false; 
    } 
} 
myFunction();//alert "calling function only for once" 
myFunction();//should not alert 
+4

說它只有一次。 – gdoron

回答

4

試試這個。

2

存儲一些goobal可變標誌,檢查變量的函數的開始:

var myFunction = function() { 
    alert("calling function only for once"); 
} 
myFunction();//alert "calling function only for once" 
myFunction();//should not alert // if I call multiple times this should not be called 
1

設置一個標誌,並根據該標誌呼叫:

var IsAlreadyCalled=false; 
var myFunction = function() { 
    if(!IsAlreadyCalled){ 
     alert("calling function only for once"); 
     IsAlreadyCalled = true; 
    } 
} 
myFunction();//alert "calling function only for once" 
myFunction();//should not alert 
1

在你很奇怪的情況下,最簡單的辦法是設置一個布爾值:如果您以後

var run = true, 
    myFunction = function(){ 
     if(run){ 
      alert('calling function only for once'); 
      run = false; 
     } else { 
      return false; 
     } 
    }; 

myFunction(); // will run 
myFunction(); // won't run 

這樣需要「重新激活」它,您可以將布爾值重新設置爲true並再次調用它。

run = true; 
myFunction(); // will run again 
0

使用標誌的其他建議都很好,但我會打造爲功能的裝飾,你可以應用到任何功能。你避免全局變量這種方式,你的代碼變得更具可讀性和可重用:

// Takes a function and returns a function 
// that executes only once 
function once(f) { 
    var flag; 
    return function() { 
    if (!flag) { 
     flag = true; 
     return f.apply(this, arguments); 
    } 
    }; 
} 

var fn = once(function() { 
    console.log('logged!'); 
}); 

fn(); // logged! 
fn(); 
fn(); 

演示:http://jsbin.com/povu/1/edit

相關問題