为什么我的回调不是typeof函数?

时间:2014-06-01 05:42:32

标签: math callback max typeof

var arr = [1,4,5];
var getMaxOfArray = function(list, callback) { //this function return the max
    if (typeof callback === "function")
        return Math.max.apply(Math, callback.call(list));
    else 
        return -1;
};

var cb = function(list) { //callback adds two to each value to a new array
    var results = [];
    for (var i=0; i<list.length; i++) {
        results.push(list[i] + 2);
    }  
    return results;
};


//cb(arr);

getMaxOfArray(arr, cb(arr));

当我调用cb(arr)时,它作为一个函数进行求值并返回[3,6,7]的预期结果,但是当我尝试调用getMaxOfArray(arr,cb(arr))时;我的条件返回-1,表明它不是一个函数?我做错了什么?

1 个答案:

答案 0 :(得分:0)

首先,你需要像这样调用getMaxOfArray方法:

getMaxOfArray(arr, cb);

第二,将调用行更改为:

return Math.max.apply(Math, callback.call(this, list));

或只是调用回调:

return Math.max.apply(Math, callback(list));