手写curry

function curry(fn,args){
  //获取函数的参数长度
  let length = fn.length;
  args = args || [];
  return function(){
    //获取上层函数调用的参数数组
    let subArgs = [].slice.call(args);
    //将本层的参数添加和上层参数合并到一起
    for(let i = 0, len = arguments.length; i < len; i ++){
      subArgs.push(arguments[i]);
    }
    //判断如果参数的长度是否满足函数所有参数的长度
    if(subArgs.length >= length){
      return fn.apply(this, subArgs);
    } else {
      return curry.call(this, fn, subArgs);
    }
  }
}