2015-11-15 20 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 
相关问题