高阶函数

定义: 一个函数中的参数是另外一个函数 那么这个函数就是高阶函数。

  1. var arr = [1,2,3,4,5];
  2. var double = function(x){
  3. return Math.pow(x,2)
  4. }
  5. var newArr = arr.map(double);
  6. console.log(newArr);

例如 数组中的sort map forEach reduce reduceRight;

柯里化函数

定义:一个函数在收集到所有的函数参数之后返回出结果,没收到所有参数之前返回当前一个函数。
是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。

  1. let curry = fn => {
  2. let curried = (..arg)=>{
  3. if(arg.length < fn.length){
  4. return (...rest) {
  5. return curried(...arg,...rest);
  6. }
  7. }
  8. return fn.apply(...arg);
  9. }
  10. }
  11. function curry(fn) {
  12. var len = fn.length,
  13. args = Array.from(arguments).slice(1);
  14. if(args.length >= len ) return fn.apply(this,args);
  15. return function curried() {
  16. args = args.concat(Array.from(arguments));
  17. if(args.length < len){
  18. return curried
  19. }
  20. return fn.apply(this,args);
  21. }
  22. }