본문 바로가기
it

일급 함수(First-class function) with javascript

by 기공준 2021. 3. 10.
반응형

안녕하세요 기공준입니다.

이번 글은 일급 함수의 간단한 개념을 알아보고 javascript로 예제를 작성하여 더욱 쉽게 이해해보려고 합니다.

 

일급 함수란?

함수가 다른 함수에 매개 변수로 제공되거나, 함수를 반환할 수 있으며, 변수에 할당하거나 데이터 구조에 저장될 수 있어야 한다고 합니다.

이런 조건들을 만족하면 일급 함수라고 표현한다고 하네요.

 

일급 함수는

함수형 프로그래밍 스타일에 필수이며, 고차 함수의 사용이 표준 관행이라고 합니다.

 

그럼 이제 예제를 작성하면서 조금 더 쉽게 이해해 보겠습니다.

예제 1 - 변수에 함수 할당

const fisrtClassFunction = function() {
	consolo.log("I am fisrtClassFunction");
}

firstClassFunction();
// I am fisrtClassFunction 출력

설명 - fisrtClassfunction이라는 이름의 변수에 "I am firstClassFunction"이라는 메시지를 출력하는 익명 함수를 할당했습니다.

확인을 위해 변수명 뒤에 () 적어 함수를 호출하면 메시지가 출력됩니다.

 

예제 2 - 함수를 인자로 전달

function hi() {
   return "Hi, ";
}
function greeting(hiMessage, name) {
  console.log(hiMessage() + name);
}

greeting(hi, "angerscroll!");
// Hi, angerscroll! 출력

설명 - greeting 함수에 hi라는 함수를 인자로 전달

다른 함수에 인수로 전달된 함수를 콜백 함수라고 부릅니다.  위 예제에서 hi는 콜백 함수입니다.

 

예제 3 - 함수 반환

function hi(){
	return function (){
    		console.log("Hi");
    	{
}

 

설명 - 함수가 함수를 반환하는 예제입니다.

함수를 반환하는 함수를 고차 함수라고 부릅니다.

 

위 예제에서 hi함수를 호출한다고 해도 hi 함수는 익명 함수를 반환할 뿐 익명 함수를 호출하지 않습니다.

그래서 hi 함수를 호출했을 때 익명 함수를 호출할 수 있도록 코드를 작성하여야 합니다.

hi함수를 호출했을 때 익명 함수를 호출할 수 있는 방법은 두 가지가 있습니다.

첫 번째는 변수에 할당하여 호출하는 방법입니다.

function hi(){
	return function (){
    		console.log("Hi");
    	{
}

const hello = hi();
hello();

 

두 번 째는 ()()를 써서 호출하는 방법이 있습니다.

function hi(){
	return function (){
    		console.log("Hi");
    	{
}

hi()();

 

이렇게 간단하게 일급 함수에 대해서 알아봤는데요

일급 함수에는 Funarg 문제가 있는데요

이 문제점은 또 다른 글에서 제대로 파고들어 봅시다.

반응형

댓글