Open huabingtao opened 4 years ago
// 木易杨 function currying(fn, length) { length = length || fn.length; // 注释 1 return function (...args) { // 注释 2 return args.length >= length // 注释 3 ? fn.apply(this, args) // 注释 4 : currying(fn.bind(this, ...args), length - args.length) // 注释 5 } } // Test const fn = currying(function(a, b, c) { console.log([a, b, c]); }); fn("a", "b", "c") // ["a", "b", "c"] fn("a", "b")("c") // ["a", "b", "c"] fn("a")("b")("c") // ["a", "b", "c"] fn("a")("b", "c") // ["a", "b", "c"]
实现函数柯理化