Node.js/Javascript

[함수형프로그래밍] 1. 일급함수란 ?

후뿡이 2024. 3. 12. 13:19

이 강의는 Inflearn 유인동님의 강의 함수형 프로그래밍과 Javacsript ES6+ 를 수강하고 작성한 글입니다.

 

 

먼저 함수형 프로그래밍을 알기 위해서는 함수형 프로그래밍에서 사용하는 용어들을 알아야 할 것이다.

Javascript의 함수형 프로그래밍의 기본 용어와 일급객체, 일급함수에 대하여 알아보도록 하겠습니다.

🐳 평가

평가란 코드가 계산 되어 값을 만드는 것을 의미한다.

const a = 1 + 2; 

라는 코드에서 a를 평가해 값을 만드는 것이다.

 

🐳 일급 객체

일급 객체란 Javascript에서 값으로 다룰 수 있는 것들을 일급객체라고 표현한다.

값으로 다룰 수 있다는 것은 아래의 특징을 가진다.

  1. 변수에 담을 수 있다.
  2. 함수의 인자로 사용할 수 있다.
  3. 함수의 결과로 사용될 수 있다.

 

이러한 관점에서 일급 함수가 무엇인지 살펴보자

일급함수를 위의 일급 객체의 개념에 대입해 보면 특징을 알 수 있다

 

🐳 일급함수

1. 일급함수는 변수에 담을 수 있다

// 1. 변수에 담을 수 있다.
const greet = function(name) {
    console.log(`Hello, ${name}!`);
}

greet('Hoo'); // 출력: Hello, Hoo!

위의 예제 코드를 보자 

greet 이라는 변수에 함수를 담은 것을 볼 수 있다.

이처럼 Javascript에서 함수는 변수에 담을 수 있다.

 

2. 함수의 인자로 사용할 수 있다.

// 2. 함수의 인자로 사용될 수 있다.
function greetSomeone(func, name) {
    func(name);
}

// greet 함수를 다른 함수의 인자로 전달합니다.
greetSomeone(greet, 'Eun'); // 출력: Hello, Eun!

 

위의 예제 코드를 보자

greetSomeone 이라는 함수의 인자로 greet 함수를 담은 것을 볼 수 있다.

이처럼 Javascript에서 일급함수는 함수의 인자로 사용할 수 있다.

 

3. 함수의 결과로 사용될 수 있다.

// 3. 함수의 결과로 사용될 수 있다.
function getGreetingFunction() {
    return function(name) {
        console.log(`Hello, ${name}!`);
    };
}

// 함수가 다른 함수를 반환합니다.
const anotherGreet = getGreetingFunction();
anotherGreet('BBo'); // 출력: Hello, BBo!

 

별거 아닌 것 같지만 getGreetingFuction 이라는 함수는 결과 값으로 함수를 가진다.

이처럼 Javascript에서 일급함수는 다른 함수의 결과로 사용될 수 있다.

 

 

🐳 그래서 일급 함수가 왜 중요해 ?

이러한 일급 함수가 중요한 이유가 무엇일까 ?

일급함수의 특징을 다시 한 번 살펴보자

 

  1. 일급함수는 변수에 담을 수 있다.
  2. 일급함수는 함수의 인자로 사용할 수 있다.
  3. 일급함수는 함수의 결과로 사용될 수 있다.

위의 특징을 살펴보면 전부 공통적인 특징이 있다.

바로 다른 함수들과 조합이 가능하다는 것이다.

그렇기 때문에 일급함수는 Javascript의 함수형 프로그래밍의 기반이 된다.

 

이러한 일급함수들을 활용하여

재사용성이 뛰어나고

간결하며

표현력이 뛰어난

고차함수를

구현할 수 있다.