87-函数柯里化

51 阅读1分钟

函数柯里化

  • 概念:将接收多个参数的函数,拆分成接收单一参数并将余下参数作为内部返回值函数中处理,该形式则称为函数柯里化
  // 计算所有传入参数的和  
  //1.未进行柯里化之前 
  function getSum(num1, num2) {   
      return num1 + num2 
  }  
  
  let res = getSum(2, 3);//5  
  getSum(res,6);  
  
  //2.函数柯里化 
  function outer(num1) {   
  let all = num1;    
  function inner(num2) {       
      all += num2       
      console.log(all);   
      }     
      return inner 
  }  
  let getRes = outer(2) 
  getRes(3)
  getRes(6)
  • 应用场景:正则格式验证

    //1.未柯里化之前
    function regStr(reg,str) {   
        return reg.test(str)
    }
    
    //检测手机号格式
    console.log(regStr(/^1[3-9]\d{9}$/,"13222222222"));
    console.log(regStr(/^1[3-9]\d{9}$/,"12222222222"));
    
    //2.进行函数柯里化
    function outer(reg){   
        let reg1 = reg  
        function inner(str){    
            return reg1.test(str)   
            }  
            return inner
        }
       let res = outer(/^1[3-9]\d{9}$/);
       console.log(res("13222222222"));
       console.log(res("12222222222"));
    
  • 作用:消除参数的重复性,简化代码