函数柯里化

4年以前  |  阅读数:348 次  |  编程语言:JavaScript 
const curring = fn => {
     const { length } = fn
     const curried = (...args) => {
         return (args.length >= length
               ? fn(...args)
               : (...args2) => curried(...args.concat(args2)))
     }
     return curried
 }

 const listMerge = (a, b, c) => [a, b, c]
 const curried = curring(listMerge)
 console.log(curried(1)(2)(3)) // [1, 2, 3]

 console.log(curried(1, 2)(3)) // [1, 2, 3]

 console.log(curried(1, 2, 3)) // [1, 2, 3]

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8