题解 | #柯里化#
柯里化
https://www.nowcoder.com/practice/bb78d69986794470969674a8b504ac00
function test(a,b,c){ return a+b+c; }
//对原函数柯里化操作
function curryIt(fn) {
// 构建一个参数数组,所有函数共享,闭包的应用
const argArr = []
return function res(arg){
// 每调用一次就将参数添加到共享数组中
argArr.push(arg)
// 判断共享数组中参数个数【调用次数】是否和原函数参数个数一致
if(argArr.length == fn.length){
// 一直接调用原函数,注意this指向,call接受一个个的独立值,因此使用剩余参数语法展开
return fn.call(this,...argArr)
}else{
// 当参数个数没有达到要求时,就继续返回该函数
return res
}
}
}
查看1道真题和解析