JS 자바스크립트 : 고차함수
first-class citizen
자바스크립트에는 일급객체 라는 개념이 있습니다. 말 그대로 특별한 대우를 받는다는 의미로 보면 크게 틀리지 않습니다. 그 중 하나가 함수(Function)인데, 자바스크립트에서 함수는 아래와 같이 특별한 취급을 받습니다
// 1. 변수에 할당(assignment)할 수 있다.
// ( 이 경우 함수 선언식과 다르게, hoisting이 적용되지 않습니다. )
const square = function (num) {
return num * num;
}
// 2. 다른 함수의 parameter로 전달될 수 있다. (Call back)
function calculator(func, num)
return func(num);
});
let output = calculator(squre, 4);
console.log(output) // -> 16
// 3. 다른 함수의 결과로 반환될 수 있다.
function adder(added) {
return function (num) {
return num + added;
};
}
const add3 = adder(3);
let output = add3(2)
console.log(output) // -> 5
고차함수 (Higher-Order Function)
고차함수는 함수를 인자로 받거나, 함수를 리턴하는 함수를 의미합니다. 그리고 이 때 다른 함수의 parameter로 전달되는 함수를 콜백 함수 (Callback function)라고 합니다.
먼저 자바스크립트 내부에 포함된 (built-in) 고차함수들 중 배열 메소드를 예로 살펴보겠습니다.
Array.prototype.filter
filter 메소드는 인자로 전달되는 콜백함수의 조건이 참인 요소들을 리턴합니다. 콜백 함수는 전달받는 배열의 요소들을 받아, 조건에 따라 true
또는 false
를 리턴해야 합니다.
const isEven = function (num) {
return num % 2 === 0;
};
let arr = [1, 2, 3, 4];
// let output = arr.filter(짝수);
// '짝수'를 판별하는 함수가 조건으로서 filter 메소드의 인자로 전달됩니다.
let output = arr.filter(isEven);
console.log(output); // ->> [2, 4]
const isLteFive = function (str) {
// Lte = less then equal
return str.length <= 5;
};
arr = ['hello', 'code', 'states', 'happy', 'hacking'];
// output = arr.filter(길이 5 이하)
// '길이 5 이하'를 판별하는 함수가 조건으로서 filter 메소드의 인자로 전달됩니다.
let output = arr.filter(isLteFive);
console.log(output); // ->> ['hello', 'code', 'happy']
Author And Source
이 문제에 관하여(JS 자바스크립트 : 고차함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@young_mason/JS-자바스크립트-고차함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)