柯里化手写实现
一.什么是柯里化函数?
第一次看到柯里化这个词,是不是觉得特别高大上,官方解释也不是很容易理解,实际上柯里化很简单!
如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

浙公网安备 33010602011771号