JS의 고차 함수
15205 단어 javascripthtmlwebdevcss
고차 함수 없이(반복 코드):
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
Reference
이 문제에 관하여(JS의 고차 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/umashankar_s/higher-order-functions-in-js-2b5d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)