高阶函数 curry.js 480 B

1234567891011121314151617181920212223242526272829
  1. // fn(1)
  2. // fn(2)
  3. // fn(3)
  4. // fn(4)
  5. // fn(5)
  6. // fn()
  7. // console.log(1,2,3,4,5)
  8. let fn = _curry(console.log,'test');
  9. fn(1)
  10. fn(2)
  11. fn(3)
  12. fn(4)
  13. fn(5)
  14. fn()
  15. function _curry(fn){
  16. let _arguments = Array.from(arguments);
  17. let params = _arguments.splice(1);
  18. return function(){
  19. let __arguments = Array.from(arguments);
  20. if(__arguments.length >= 1){
  21. params.push(...__arguments);
  22. }else{
  23. fn(...params,...arguments);
  24. }
  25. }
  26. }