高阶函数
定义: 一个函数中的参数是另外一个函数 那么这个函数就是高阶函数。
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);
}
}