JS의 고차 함수

원의 면적, 둘레 및 지름을 계산하는 함수의 스니펫을 작성하십시오.

  • 고차 함수 없이(반복 코드):

  • const radius = [2,3,4,5,6,7];
    let output = [];
    
    const area = function(radius) {
      output = [];
      for(i=0;i<radius.length;i++){
        output.push(Math.PI*radius[i]*radius[i]); //Area = PI*radius*radius
      }
      return output;
    }
    const circumference = function(radius) {
      output = [];
      for(i=0;i<radius.length;i++){
        output.push(2*Math.PI*radius[i]);
      }
      return output;
    }
    const diameter = function(radius) {
      output = [];
      for(i=0;i<radius.length;i++){
        output.push(2*radius[i]);
      }
      return output;
    }
    console.log(area(radius));
    console.log(circumference(radius));
    console.log(diameter(radius));
    


    위의 코드를 보면 수학 공식을 제외하고는 면적, 둘레, 지름 함수가 거의 동일합니다. 그래서 우리는 그것을 고차 함수를 사용하여 일반화된 함수로 만듭니다.



  • 고차 함수(다른 함수를 인수로 취하거나 함수를 반환하는 함수)

  • const radius = [2,3,4,5,6,7];
    let output = [];
    
    const area = function(value) {
        return Math.PI*value*value;
    }
    
    const circumference = function(value) {
        return 2*Math.PI*value;
    }
    
    const diameter = function(value) {
        return 2*value;
    }
    
    const calculate = function(radius, logic) {
        output = [];
      for(i=0;i<radius.length;i++){
        output.push(logic(radius[i]));
      }
      return output;
    }
    
    console.log(calculate(radius, area));
    console.log(calculate(radius, circumference));
    console.log(calculate(radius, diameter));
    


    여기에서 다른 함수를 입력 매개변수(고차 함수)로 받아들이는 하나의 일반화된 함수를 만들고 있습니다.



  • ES6 기능 맵과 함께.
    위 섹션에서는 작업을 수행하기 위해 고차 함수를 생성했으며 "Map"이라는 기존 자바 스크립트 함수를 사용하여 동일한 작업을 수행할 수 있습니다.

  • const radius = [2,3,4,5,6,7];
    
    const area = function(value) {
        return Math.PI*value*value;
    }
    
    const circumference = function(value) {
        return 2*Math.PI*value;
    }
    
    const diameter = function(value) {
        return 2*value;
    }
    
    console.log(radius.map(diameter))
    




  • 고차 함수를 사용한 Map 함수 복제. (맵 폴리필).
    Map과 마찬가지로 아래와 같은 고차 함수를 사용하여 자체 프로토타입 및 작업을 만들 수도 있습니다.

  • const radius = [2,3,4,5,6,7];
    let output = [];
    
    const area = function(value) {
        return Math.PI*value*value;
    }
    
    const circumference = function(value) {
        return 2*Math.PI*value;
    }
    
    const diameter = function(value) {
        return 2*value;
    }
    
    Array.prototype.calculate = function(logic) {
        output = [];
      for(i=0;i<this.length;i++){
        output.push(logic(this[i]));
      }
      return output;
    }
    
    console.log(radius.map(area))  //default js function
    console.log(radius.calculate(area)); //cloned the map function
    

    좋은 웹페이지 즐겨찾기