고차 함수 - 무엇을, 왜, 어디서
11849 단어 webdevprogrammingjavascriptbeginners
고차 함수란?
간단히 말해서 다른 함수를 인수로 받아들이거나 함수를 결과로 반환하는 모든 함수입니다.
고차 함수를 사용하는 이유
고차 함수는 Javascript 언어에서 광범위하게 사용됩니다.
도움이 되는 두 가지 주요 영역은 코드 크기 감소와 코드 재사용성입니다. 즉, 코드를 보다 선언적으로 만듭니다. 하나의 함수를 다른 함수에 넣을 수 있다는 사실은 더 작은 함수를 더 큰 함수로 합성할 수 있게 해줍니다.
아마도 당신은 깨닫지 못한 채 코드에서 이미 고차 함수를 사용했을 것입니다.
Array
, sort
& map
와 같은 filter
메서드를 코드에서 한 번 이상 사용하지 않았습니까? 이들은 고차 함수입니다.이론은 이제 충분합니다. 다음 섹션에서 몇 가지 실용적인 예를 살펴보겠습니다.
고차 함수를 사용하는 경우
실행될 때마다
woof
를 반환하는 함수를 만들어 보겠습니다.function dog() {
console.log('woof');
}
이제
dog
라는 함수가 있습니다. 따라서 dog
를 호출할 때마다 콘솔에 woof
가 표시됩니다.우리는 항상 한 함수를 다른 함수에 인수로 전달할 수 있으며 특정 작업을 완료하기 위해 호출할 수 있습니다. 이 예를 보자:
function dog(callback) {
console.log('woof');
callback();
}
이제 이 함수
dog
를 실행할 때마다 먼저 콘솔에 출력woof
한 다음 인수로 전달되는 함수의 논리를 호출합니다.이 경우
dog
함수는 인수로 함수를 전달하지 않으면 오류를 반환합니다.Uncaught TypeError: callback is not a function
at dog (<anonymous>:3:2)
at <anonymous>:1:1
코드를 수정하여 이 문제를 쉽게 해결할 수 있습니다.
function dog(callback) {
console.log('woof');
if (callback) {
return callback();
}
}
이제 위의 함수를 다른 함수를 인수로 허용하여 1차 함수에서 고차 함수로 변환했습니다.
이를 더 확인하기 위해 다른 기능을 추가합니다.
function cat() {
console.log('meow');
}
위의 함수는 함수
dog
와 동일하지만 반환값이 다릅니다. 이제 위의 함수를 dog
함수에 인수로 전달하고 dog
함수는 이것을 콜백 함수로 실행합니다.dog(cat);
// console will return woof
// console will return meow
위의 예는 함수를 다른 함수의 인수로 전달한 논리를 충족합니다. 이제 다른 함수에서 함수를 반환하는 방법을 살펴보겠습니다.
이제 인수로 전달된 두 숫자를 곱하는 함수를 만들어 보겠습니다.
function multiply(x, factor) {
return num1 * factor;
}
이제 우리는 숫자를 취하고 다른 인수로 곱하는 다른 함수를 만들고 싶습니다. 이 예를 보자:
function multiply(factor) {
return function(x){
return x * factor;
}
}
따라서
multiply
함수는 이제 전달된 요소를 사용하는 새 함수를 반환합니다.이제 다음과 같이 할 수 있습니다.
let double = multiply(2);
let triple = multiply(3);
이제 어떤 숫자에 2 또는 3을 곱하는 데 사용할 수 있는 두 가지 다른 함수가 있습니다. 방법을 살펴보겠습니다.
double(3); // will return 6
triple(3); // will return 9
따라서 고차 함수를 만들고 사용하는 방법을 배웠습니다. 이제 Javascript에서 다른
Array
메서드를 사용하는 고차 함수의 몇 가지 예를 살펴보겠습니다.Higher Order Function으로
array
메서드map
의 예:const myArray = [1, 2, 3, 4, 5]
const doubleIt = num => num * 2;
myArray.map(value => doubleIt(value)) // returns [2, 4, 6, 8, 10]
위의 예에서 함수
map
가 myArray
를 반복하고 각 반복에서 값이 doubleIt
인 다른 함수myArray
를 반환하는 것을 볼 수 있습니다.Higher Order Function으로
array
메서드filter
의 예: let pets = [
{
name: 'Max', kind: 'dog',
},
{
name: 'Shiro', kind: 'dog',
},
{
name: 'romeo', kind: 'cat',
},
{
name: 'niki', kind: 'cat',
},
]
let cats = pets.filter(function(pet){ return pet.kind === 'cat'})
console.log(cats) // returns [{name: 'romeo', kind: 'cat'}, {name: 'niki', kind: 'cat'}]
let dogs = pets.filter(function(pet){ return pet.kind === 'dog'})
console.log(dogs) // returns [{name: 'Max', kind: 'dog'}, {name: 'Shiro', kind: 'dog'}]
위의 예에서
filter
는 익명 함수에서 반환된 데이터가 포함된 새 배열을 반환합니다.Array
, map
, filter
와 같은 reduce
메서드를 사용하면 코드 가독성과 품질이 향상됩니다.이제부터는 함수가 인수로 전달되거나 함수가 함수에서 반환되는 패턴을 발견할 때마다 고차 함수를 다루고 있음을 알 수 있습니다.
읽어주셔서 감사하고 이 게시물에서 무언가를 배웠기를 바랍니다.
당신은 나를 팔로우하고 나에게 어떤 제안이든 자유롭게 드롭하거나 그냥 안녕이라고 말할 수 있습니다!
Reference
이 문제에 관하여(고차 함수 - 무엇을, 왜, 어디서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/the_ghost_dev/higher-order-functions-what-why-where-1fe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)