我正在进行练习,并且根据调用函数的次数,应返回不同的结果。如果函数例如被称为0,1,2次,它应该返回一个数字(见下文),如果它被调用超过3次并且是奇数(称为3次,第三次被称为=奇数)那么它应该返回一个字符串,等等。我知道如果只调用一次或者根本不调用我会怎么做,但我无法弄清楚如何编写奇数/偶数时间的代码..
此部分已提供,不应更改:
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;
}
}
答案 0 :(得分:1)
不确定这是否适合您的问题,但请尝试运行下面的代码段。
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);
&#13;
应该返回[7,9,11,&#39;不知道&#39; 15,&#39;不知道&#39; 19,&#39;不知道&#39;]而
array [0] = 7,
array [1] = 9,
array [2] = 11,
array [3] =&#39;不知道&#39;,//第3次调用
array [4] = 15,
array [5] =&#39;不知道&#39;,//奇数
array [6] = 19,
阵列[7] =&#39;不知道&#39; //奇数
希望它能回答你的问题。