详解JavaScript的高阶函数,并举例说明

作者:admin     字体:[增加 减小]    类型:原创
在JavaScript中有一个重要的概念是高阶函数,它接收一个或多个函数作为参数,并返回一个新函数。

在JavaScript中有一个重要的概念是高阶函数,它接收一个或多个函数作为参数,并返回一个新函数。这只是一种编程技巧,是可以轻松实现的,虽然在C及PHP语言中没有办法实现,但是对于JavaScript并没有什么神奇之处。

function not(f){
    return function(){  //返回一个新函数
        var result = f.apply(this,arguments);   //调用f()
        return !result; //对结果求反
    }
}
var even = function(x){return x%2===0;};
var odd = not(even);
console.log([1,1,3,5,5,7].every(odd));  //true

上面的not()函数就是一个高阶函数,因为它接收一个函数作为参数,并返回一个新函数。下面再看一个示例

var map = function(a,f){
    var results = [];
    for(var i=0,len=a.length;i<len;i++){
        if(i in a) results[i] = f.call(null,a[i],i,a);
    }
    return results;
}

function mapper(f){
    return function(a){ return map.call(undefined,a,f);};
}

var increment = function(x){return x+1;};
var incrementer = mapper(increment);
console.log(incrementer([2,3,5]));  //[3,4,6]

在上面的示例中,mapper()函数接收一个函数作为参数,并返回一个新函数,这个新函数将一个数组映射到另一个使用这个函数的数组上。

高阶函数的用处很广泛,比如在不完全函数与记忆函数上都要使用到。