关于《JavaScript权威指南》里一个高阶函数的问题

《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是返回函数的外层函数的一个变量,那么究竟要理解哪个不同,这个“至关重要”就是怎样的一个至关重要

阅读 2.6k
1 个回答

我也研究了一下,之后发现.
mapper 高阶函数可以被你封装成 各种执行的函数 比如你现在封装成m1.
可以有m2 m3 m4.根据不同的 f2 f3 f4 构建而成.
你调用的时候只需要m1()调用就行,比map形式方便了很多.
另外这也根柯里化(Curry)函数有关系.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题