高阶函数
定义: 一个函数中的参数是另外一个函数 那么这个函数就是高阶函数。
var arr = [1,2,3,4,5];var double = function(x){return Math.pow(x,2)}var newArr = arr.map(double);console.log(newArr);
例如 数组中的sort map forEach reduce reduceRight;
柯里化函数
定义:一个函数在收集到所有的函数参数之后返回出结果,没收到所有参数之前返回当前一个函数。
是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
let curry = fn => {let curried = (..arg)=>{if(arg.length < fn.length){return (...rest) {return curried(...arg,...rest);}}return fn.apply(...arg);}}function curry(fn) {var len = fn.length,args = Array.from(arguments).slice(1);if(args.length >= len ) return fn.apply(this,args);return function curried() {args = args.concat(Array.from(arguments));if(args.length < len){return curried}return fn.apply(this,args);}}
