题解 | #柯里化#
柯里化
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 } } }