Javascript函数调用另一个函数作为参数

时间:2014-11-12 05:30:38

标签: javascript parameter-passing function-parameter

我在两个不同的文件中有一些函数,它们都通过函数调用链接在一起,如下所示

文件1:

function getFunction(func){

}   

文件2:

function Numbers(one, two) {
    return (one*two);
}


var func = getFunction(Numbers);

这些被称为:

func(input_array);

我的数组的值为1,3,5,7,9,我需要func(input_array)才能返回3,15,35,63,9(最后一个值循环回第一个值)

基本上我要做的是让getFunction返回一个函数,以便计算这些值。我遇到了麻烦,因为我无法解决发送和返回功能的问题。如果未将数组发送到函数中,我不知道如何访问该数组。如果我需要澄清任何事情,请告诉我。

2 个答案:

答案 0 :(得分:1)

function getFunction(callback) {
    return function(array) {
        return array.map(function(cur, index) {
            return callback(cur, array[(index+1) % array.length]);
        });
    };
}

getFunction返回callback参数的闭包,该参数是您要调用的函数。闭包接收array参数,并使用array.map在数组循环中调用回调。 %模数运算符执行您想要的环绕。

另一种更清晰的写法是:

function getFunction(callback) {
    return function(array) {
        var result = [];
        for (var i = 0; i < array.length; i++) {
            j = (i+1) % array.length; // Next index, wrapping around
            result.push(callback(array[i], array[j]));
        }
        return result;
    };
}

var func = getFunction(Numbers);
console.log(func([1,3,5,7,9])); // Logs [3,15,35,63,9]

答案 1 :(得分:0)

这里是简单的函数,返回你需要的东西

function Numbers(x) {     
      output_array=[];
    for(i=0;i<x.length;i++){  

      if(x[i+1]==undefined){
        output_array.push(x[i]);
      }
      else{
           output_array.push(x[i]*x[i+1]);
      }
    }
    return output_array;
}

var input_array=[1,3,5,7];
var num = Numbers(input_array);
console.log(num);

或者如果你需要它的方式调用另一个函数   而不是返回结果使用此

function getFunction(Numbers,input_array){

  return Numbers(input_array);

}

function Numbers(x) {     
    output_array=[];

    for(i=0;i<x.length;i++){
      if(x[i+1]==undefined){
        output_array.push(x[i]);
      }
      else{
           output_array.push(x[i]*x[i+1]);
      }
    }
    return output_array;
}

var input_array=[1,3,5,7];
var num = getFunction(Numbers,input_array);
console.log(num);