字节前端面试题:函数柯里化
首先还是讲问题分析:
什么是函数柯里化:
先从
简而言之就是 函数嵌套
// 举例:
function A( a:number ){
let s = a+2
return function B(b:number){
return b+s
}
}
A(3)(2) //7
为什么要写函数柯里化
利用【闭包空间】进行【数据或状态缓存,避免重复计算】;
function sum(){
if(arguments.length == 1) return arguments[0]
let s = 0;
for(let i in arguments){
s+=arguments[i]
}
return sum.bind(this,s)
}
// 测试用例
sum(1,2)() //3
sum(1,2)(2,3,4)() //12