调用函数的次数(偶数/奇数次)

时间:2016-05-31 01:20:46

标签: javascript function

我正在进行练习,并且根据调用函数的次数,应返回不同的结果。如果函数例如被称为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;
    }
}

1 个答案:

答案 0 :(得分:1)

不确定这是否适合您的问题,但请尝试运行下面的代码段。

&#13;
&#13;
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;
&#13;
&#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; //奇数

希望它能回答你的问题。