Front-end/JavaScript

JS 클로저 2편 - 일급 객체(First Class)

파리외 개발자 2023. 1. 14. 18:02

First Class

JS뿐 아니라 몇몇 언어 또한 first class라는 개념을 가지고 있다.

JS에서의 function은 객체이자 first class이며 특징은 아래와 같다.

  • 함수를 변수에 저장할 수 있다.
  • 함수를 인자로 전달할 수 있다.
  • 함수를 값처럼 리턴할 수 있다.

일급객체 개념은 클로저를 이해하는 데 중요한 개념이다.

함수를 변수에 저장

//1 함수를 변수에 저장할 수 있다
var stuff = function () {
	console.log('this is first class');
};

stuff()

함수를 인자로 전달

//2 함수를 인자로 전달할 수 있다
function a(fn) {
  fn();
}

a(function () {
  console.log("this is argument func");
});

함수를 값으로 리턴

//3 함수를 값으로 리턴할 수 있다
function b() {
  return function c() {
    console.log("this is return func");
  };
}

b()();

리턴값이 함수이므로 ()로 실행시켜 준다.

혹은 리턴값을 1번 법칙에 따라 변수에 저장하고 실행시켜 줄 수도 있다.