본문 바로가기

JavaScript

[JavaScript] 자바스크립트의 일급 함수

리액트를 배워보면서 일급 함수라는 개념이 종종 등장하였습니다.
자바를 주로 사용하던 저에게는 생소한 개념이었습니다.

왜 자바스크립트의 함수는 일급 함수라고 부르는 걸까요?
이번 글에서는 일급 함수가 무엇인지 그 조건에 대해서 작성해보겠습니다.


일급 함수

단어의 생김새만 봐서는 무언가 뛰어난 함수를 의미하는 것 같습니다.
단어의 의미를 말하기에 앞서, 일급 객체의 조건에 대해서 살펴보겠습니다.

  • 일급 객체는 변수나 자료구조에 저장할 수 있어야 합니다.
  • 일급 객체는 매개변수의 인자로 전달할 수 있어야 합니다.
  • 일급 객체는 함수의 반환값으로 사용할 수 있어야 합니다.

보셨듯이 간단한 정수와 실수 자료형은 대부분 일급 객체에 속합니다.
그럼 자바스크립트의 함수는 일급 객체의 조건을 만족하는 것일까요?
예제를 통해 이를 확인해보겠습니다.

 

변수에 함수 할당

const move = function() {
  console.log("움직입니다.");
}

move(); // 움직입니다.

 

함수에 인자로 전달

function feed() {
  return '에게 먹이를 줍니다.';
}

function rasing(name, action) {
  console.log(name + action());
}

rasing('금붕어', feed); // 금붕어에게 먹이를 줍니다.

예제처럼 다른 함수에 인자로 전달되는 함수를 콜백 함수라고 부릅니다.

 

함수를 반환

function add(a) {
  return function (b) {
    return a + b;
  }
}

const result = add(1)(2);
console.log(result); // 3

글을 끝까지 봐주셔서 감사합니다.
틀린 내용이 있다면 댓글로 지적 부탁드립니다.