文章目录
函数柯里化是把接受多个参数的函数转变成接受一个单一参数(最初函数的第一个参数),并且返回接受余下的参数而且返回结果的新函数的技术。
理解函数柯里化
通用函数解决兼容性问题,但是同时也会带来使用不便性,不同的应用场景旺旺要传递很多参数,已达到解决特定的目的,有时应用中,会对同一个规则进行反复使用,这样就造成了代码的重复性。
1 | function square(i) { |
例子中,创建了一个 map 通用函数,用于适应不同的应用场景。显然,通用性不用怀疑。同时,例子中重复传入了相同的处理函数:square 和 dubble。
下面可以利用柯里化改造一下:
1 | function square(i) { |
1 | var currying = function (fn) { |
无论输入多少个参数嘛都会打印输出,且都会带第一个参数,上文代码fn.applay(null,newArgs)
中的null
本事应该制定 fn 中 this 的指向的对象,没有就用 null。
实用场景
- 参数复用(上文中的合法老婆)
- 提前返回,下面是一个兼容现代浏览器以及 IE 浏览器的事件添加方法:
事件添加处理
1 | var addEvent = function (el, type, fn, capture) { |
在使用 addEvent 为元素添加事件的时候,(eg.IE6/IE7)都会走一遍 if–else,其实只要判定一次就可以了。
1 | var addEvent = (function () { |
延时计算
1 | var curryWeigth = function (fn) { |
无限级累加器
1 | //利用闭包的思想 |