《JavaScript权威指南》 第八章 高阶函数一节,有这样类似的一个例子:
function f(x){
return x+1
}
function mapper(f){
return function(a){
return a.map(f);
}
}
var m1=mapper(f);
m1([3,4,5]) // [4,5,6]
[3,4,5].map(f) //[4,5,6]
mapper函数和数组的map()方法实现了同样的计算,“但要首先理解这两个函数的不同,理解这一点至关重要”
我能理解的是,这两个函数mapper返回的是个闭包,参数f是返回函数的外层函数的一个变量,那么究竟要理解哪个不同,这个“至关重要”就是怎样的一个至关重要
我也研究了一下,之后发现.
mapper 高阶函数可以被你封装成 各种执行的函数 比如你现在封装成m1.
可以有m2 m3 m4.根据不同的 f2 f3 f4 构建而成.
你调用的时候只需要m1()调用就行,比map形式方便了很多.
另外这也根柯里化(Curry)函数有关系.