[英]How many times a function was called (even/odd number of times)
我正在做一个练习,根据调用函数的次数,应该返回不同的结果。 例如,如果函数被调用 0、1、2 次,它应该返回一个数字(见下文),如果它被调用超过 3 次并且是奇数(调用 3 次,第三次调用 =odd)那么它应该返回一个字符串等。我知道如果它只被调用一次或根本不调用我会怎么做,但我无法弄清楚如何编写奇数/偶数时间的代码..
这部分已提供,不应更改:
var plus = function (a,b) {
return a+b;
}
var func = sometimes(plus);
var array = [];
for(var i = 0; i < 8; i++){
array.push(func(2+i,3+i)) //should return [7,9,11, 'no idea']
}
这是我写的函数,显然是错误的..
function sometimes (newFunc){
var called = newFunc();
if (called>4) {
return newFunc;
}
}
不确定这是否适合您的问题,但请尝试运行下面的代码片段。
var selfInvokeFunc = (function (func) { var counter = 0; return function (func) { if (counter >= 3 && counter % 2 != 0) { counter++; return "'no idea'"; } else { counter++; return func; } } })(); var plus = function (a,b) { return a+b; } var func = function (a, b) { return selfInvokeFunc(plus(a+1,b+1)); } var array = []; for(var i = 0; i < 8; i++){ array.push(func(2+i,3+i)); } alert(array); //should return [7,9,11,'no idea',15,'no idea',19,'no idea'] document.write(array);
那应该返回 [7,9,11,'no idea',15,'no idea',19,'no idea'] 而
数组[0] = 7,
数组[1] = 9,
数组[2] = 11,
array[3] = 'no idea', //第三次调用
数组[4] = 15,
array[5] = '不知道', // 奇数
数组[6] = 19,
array[7] = 'no idea' // 奇数
希望它能回答你的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.