Javascript检查函数的结果是否已经输出,如果是,则运行该函数

Javascript check if the result of a function has been already outputted and if yes, run the function

本文关键字:函数 如果 运行 输出 检查 结果 结果是 Javascript 是否      更新时间:2023-09-26

我为我糟糕的英语提前道歉。

我制作了一个javascript函数gen(),它通过将从两个数组中随机选择的两个值相加来生成一个值。

我想创建一个函数,运行gen(),并且只有在以前从未输出过值的情况下才输出该值,否则将再次执行函数gen()

提前谢谢。

gen()函数的代码:

function gen() {
		var s = ["a", "b"];
		var c = ["c", "d"];
		var MbSubj = ["Hello", "Hi", "Hey"];
		var MaSubj = ["John", "Jack", "Matt"];
		var FbSubj = ["Lara", "Juliet"];
		var FaSubj = ["Lora", "Elise"];
		var sRand = s[Math.floor(Math.random() * s.length)];
		var cRand = c[Math.floor(Math.random() * c.length)];
		var FbSubjRand = FbSubj[Math.floor(Math.random() * FbSubj.length)];
		var MbSubjRand = MbSubj[Math.floor(Math.random() * MbSubj.length)];
		var FaSubjRand = FaSubj[Math.floor(Math.random() * FaSubj.length)];
		var MaSubjRand = MaSubj[Math.floor(Math.random() * MaSubj.length)];
		function mb() {
				return MbSubjRand + MaSubjRand;
		}
		function ma() {
			return MaSubjRand + MbSubjRand;
		}
		function fb() {
				return FbSubjRand + MaSubjRand;
		}
		function fa() {
				return FaSubjRand + MbSubjRand;
		}
		if (sRand === "a" && cRand === "b") {
				mb();
		} else if (sRand === "b" && cRand === "c") {
				ma();
		} else if (sRand === "a" && cRand === "d") {
				fb();
		} else {
				fa();
		}
}

如果您已经运行gen,则保留变量,如果是,则不再运行,如果不是,则运行它:

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