TIL
TIL copied to clipboard
柯里化函数
之前有写过一篇文章,是说柯里化函数和函数组合, 看完之后真是大受脾益,尤其是在看redux
源码的时候,就感觉很顺通。
今天上午看了下简书,发现了一个被面试到的问题,思考了下。问题是这样的:
函数闭包与柯里化(让手写一个函数完成求和操作,func(1)(2)(3)、func(1,2)(3)和func(1,2,3)都能保证可以正常求和)
function add(...args) {
return args.reduce((total, item) => total = total + item, 0)
}
function func(fn){
return (length) => (...args) => (length - args.length) ? func(fn)(length).bind(null, ...args) : fn(...args)
}
add3 = func(add)(3)
add3(1)(2)(3)
add3(1,2)(3)
add3(1,2,3)
上面的func
看起来有些怪怪的, 有这个func(fn)(length)
,那么我们来改下下
function func(fn){
return (length) => varFun = (...args) => (length - args.length) ? varFun.bind(null, ...args) : fn(...args)
}