2015-11-15 18 views
0

我爲我的英語不好提前道歉。Javascript檢查一個函數的結果是否已經輸出,如果是,運行函數

我做了一個javascript函數gen(),它通過添加從兩個數組中隨機選擇的兩個值來生成一個值。

我想要運行gen()功能和輸出值,只有當它從未被輸出,否則將再次執行功能gen()

在此先感謝。

gen()函數的代碼:

function gen() { 
 
\t \t var s = ["a", "b"]; 
 
\t \t var c = ["c", "d"]; 
 

 
\t \t var MbSubj = ["Hello", "Hi", "Hey"]; 
 
\t \t var MaSubj = ["John", "Jack", "Matt"]; 
 
\t \t var FbSubj = ["Lara", "Juliet"]; 
 
\t \t var FaSubj = ["Lora", "Elise"]; 
 

 
\t \t var sRand = s[Math.floor(Math.random() * s.length)]; 
 
\t \t var cRand = c[Math.floor(Math.random() * c.length)]; 
 
\t \t var FbSubjRand = FbSubj[Math.floor(Math.random() * FbSubj.length)]; 
 
\t \t var MbSubjRand = MbSubj[Math.floor(Math.random() * MbSubj.length)]; 
 
\t \t var FaSubjRand = FaSubj[Math.floor(Math.random() * FaSubj.length)]; 
 
\t \t var MaSubjRand = MaSubj[Math.floor(Math.random() * MaSubj.length)]; 
 

 
\t \t function mb() { 
 
\t \t \t \t return MbSubjRand + MaSubjRand; 
 
\t \t } 
 

 
\t \t function ma() { 
 
\t \t \t return MaSubjRand + MbSubjRand; 
 
\t \t } 
 

 
\t \t function fb() { 
 
\t \t \t \t return FbSubjRand + MaSubjRand; 
 
\t \t } 
 

 
\t \t function fa() { 
 
\t \t \t \t return FaSubjRand + MbSubjRand; 
 
\t \t } 
 

 
\t \t if (sRand === "a" && cRand === "b") { 
 
\t \t \t \t mb(); 
 
\t \t } else if (sRand === "b" && cRand === "c") { 
 
\t \t \t \t ma(); 
 
\t \t } else if (sRand === "a" && cRand === "d") { 
 
\t \t \t \t fb(); 
 
\t \t } else { 
 
\t \t \t \t fa(); 
 
\t \t } 
 
}

+0

你的代碼在哪裏? – rajuGT

+0

您是否希望整個函數只運行一次,或者每個名稱組合只出現一次? – Shomz

+0

每個名稱組合只出現一次 – ZwartyZ

回答

1

請變量,如果你已經運行,如果是,不再運行,如果沒有,運行它:

的jsfiddle:http://jsfiddle.net/0j8wqswn/

function gen(){ 
    alert('this is the gen function') 
} 


(function(){ 
    var alreay_run=false; 
    new_function=function(){ 
     if(alreay_run) return 
     alreay_run=true 
     gen(); 
    } 
})() 


//Let's Test 
new_function() 
new_function() 
new_function() 

//You will see alert only one time 
相關問題