高阶函数(higher-order function)—如果一个函数接收的参数为或返回的值为函数,那么我们可以将这个函数称为高阶函数。众所周知,JavaScript是一种弱类型的语言:JavaScript的函数既不对输入的参数,也不对输出值作强定义和类型检查,那么函数可以成为参数,也可以成为输出值,这就体现了JavaScript对高阶函数的原生支持。
一、参数为函数的高阶函数:
function funcTest(f){
//简易判断一下实参是否为函数
if((typeof f)=="function"){
f();
}
}
funcTest(function(){ }); 这是一个简易的将参数作为函数的高阶函数。在调用funcTest时,输入一个函数作为参数,在funcTest内部执行这个输入的匿名函数,当然这样的代码片段没有什么实际意义。
二、返回值为函数的高阶函数:
function funcTest(){
return function(){
};
}
var f=funcTest();调用funcTest返回一个函数。
三、一个复杂一点的例子:
//Number类型相加
function addInt(a,b){
return parseInt(a)+parseInt(b);
}
//String类型相加
function addString(a,b){
return a.toString()+ b.toString();
}
function add(type){
if(type==="string"){
return addString;
}else{
return addInt;
}
}
var data1=add("string")("1","2"); //12
var data2=add("int")("1","2"); //3