柯里化手写实现
一.什么是柯里化函数?
第一次看到柯里化这个词,是不是觉得特别高大上,官方解释也不是很容易理解,实际上柯里化很简单!
如fn(1)(2)() | fn(1,2)(3,4,...) ,这种可以连续调用的函数的就是柯里化函数
二.柯里化函数的特点
柯里化函数在最后一次调用的时候,才会去真正执行
三.柯里化函数使用在哪里?
柯里化经常涉及到几个概念:高阶函数、闭包、call/apply,argument
柯里化函数在react的高阶组件中常用,比如react-redux的底层仿写就是高阶组件+柯里化
柯里化的原理就是有参数时返回当前函数,没参数时执行所有参数,返回一个最终结果.这里写一个简单的柯里化函数实现
<script> function myCurry(fn) { var arr = []; return function () { if (arguments.length > 0) { arr=arr.concat(Array.from(arguments)) return arguments.callee; } else { return fn.apply(null,arr) } } } let fn=myCurry(function(){ let arr=Array.from(arguments); let sum=arr.reduce(function(total,item){ return total+item; }) return sum; }) var s=fn(1)(2)() console.log( s);//3 </script>
开源中国博客地址:https://my.oschina.net/u/2998098/blog/1540520