箭头函数的诞生使得js编程在一定程度上得到了简化,代码简洁明了。箭头函数实现了this作用域上和函数外部保持一致,但是在箭头函数简写上有时是相对抽象的。
对于一般简写:
name => `my name is ${name}`
这种可以理解为参数name经过函数后变为my name is name。是相对比较好理解的。
还有一种比较复杂的简写,链式调用
const chainFunction = name => when => where => why => what => how => `${when}${name}在${where}由于${why}${how}${what}`
//调用:
chainFunction('小明')('4月11日')('公司')('项目bug')('检查代码')('全神贯注的')
运行结果:
由上面的例子能够想到什么呢?如果我们把这个函数转化成es5,会是一串return,每一个都是接收参数的新函数,最后返回结果,其实这也是偏函数的实现。这点也不同于thunk函数。
既然返回的都是一个接受参数的函数,那么我们可以这样理解:
箭头函数的链式函数中,每一层箭头只是为了给当前程序注入额外的变量参数,当然也可以使用(...args),最终这些参数经过函数的处理返回一个结果(或者不反回)。
在链式箭头函数每个层级也可以对参数进行额外的操作,但这并不影响每一层级出现的意义。
从这个角度理解,我觉得可以避免陷入到一串return中去,还要去分析每一次return之后,函数的结果。
这种理解方法我把它称之为函数整体分析法。
思考:很多时候程序看起来是复杂的,但是程序总归是程序,总是有规律可循的,尽可能简单的抽象通用逻辑,这样反而好理解,有时候不用太关注细节。
应用:redux中的applyMiddleware,compose等