本文主要是介绍手写JavaScrip函数柯里化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
手动实现一个柯里化函数
// 柯里化函数的实现lyCurrying
function lyCurrying(fn) {function curried(...args) {// 判断当前已经接收的参数的个数, 可以参数本身需要接受的参数是否已经一致了// 1.当已经传入的参数 大于等于 需要的参数时, 就执行函数if (args.length >= fn.length) {// fn(...args)// fn.call(this, ...args)return fn.apply(this, args)} else {// 没有达到个数时, 需要返回一个新的函数, 继续来接收的参数function curried2(...args2) {// 接收到参数后, 需要递归调用curried来检查函数的个数是否达到return curried.apply(this, args.concat(args2))}return curried2}}return curried
}
调用
var curryAdd = lyCurrying(add1)console.log(curryAdd(10, 20, 30))
console.log(curryAdd(10, 20)(30))
console.log(curryAdd(10)(20)(30))
这篇关于手写JavaScrip函数柯里化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!