JS 3-3. 일급 객체, 일급 객체로서 함수

강연주·2024년 11월 24일

🙋‍♀️ 기술면접

목록 보기
64/112

18. 일급 객체로서의 함수가 어떤 의미인지, 왜 중요한지 설명

자바스크립트에서 일급 객체(first-class citizen)로서의 함수는,
함수가 다른 데이터 타입들과 동일한 방식으로 취급된다는 것을 의미한다.

  1. 변수에 할당되거나
  2. 다른 함수의 인자로 전달되거나
  3. 함수에서 반환값으로 사용될 수 있다.

변수에 할당 가능

🖥️ javascript

const sayHello = function() {
    return "Hello!";
};
console.log(sayHello()); // "Hello!"

함수는 변수에 할당될 수 있으며, 이를 통해 이름 없는 익명 함수도 사용할 수 있다.


함수의 인자로 전달 가능

🖥️  javascript

function executeFunction(fn) {
    console.log(fn());
}

executeFunction(() => "I am a function!"); // "I am a function!"

함수는 다른 함수에 인자로 전달될 수 있고, 이런 특성 덕분에
콜백 함수나 고차 함수(higher-order function)를 사용할 수 있다.


함수의 반환값으로 사용 가능

🖥️  javascript

function createMultiplier(multiplier) {
    return function (value) {
        return value * multiplier;
    };
}

const double = createMultiplier(2);
console.log(double(5)); // 10

함수는 또 다른 함수를 반환할 수 있다.
이는 클로저(closure)의 중요한 기초가 된다.


데이터 구조에 저장 가능

🖥️  javascript

const functions = [
    () => "First function",
    () => "Second function",
];

console.log(functions[0]()); // "First function"

배열이나 객체에 함수가 저장될 수 있어 동적이고 유연한 구조를 만들 수 있다.


왜 중요한가?

1. 동적 프로그래밍의 유연성 제공

일급 객체로서의 함수는 고차 함수, 콜백 함수, 클로저 등과 같은 기능을 가능하게 하여 코드의 재사용성과 간결성을 제고한다.

2. 함수형 프로그래밍 지원

자바스크립트는 함수형 프로그래밍 패러다임을 지원하며, 함수가 일급 객체로 동작하기 때문에 map, filter, reduce와 같은 고차 함수 활용이 가능하다.

3. 이벤트 기반 프로그래밍

자바스크립트는 이벤트 기반 언어로, 비동기 처리에서 콜백 함수가 필수적인데,
함수가 일급 객체로 동작하기 때문에 이를 간편하게 구현할 수 있다.

🖥️  javascript

document.addEventListener('click', () => {
    console.log('Document clicked!');
});

4. 확장성과 유지보수성 향상

함수가 동적으로 생성, 전달, 반환될 수 있기 때문에 확장 가능한 디자인 패턴
(예: 전략 패턴, 데코레이터 패턴 등)을 쉽게 구현할 수 있다.


➡️ 자바스크립트에서 함수가 일급 객체라는 점은 언어의 유연성과 표현력을 크게 높이는 중요한 개념이다. 이를 통해 다양한 프로그래밍 패러다임을 지원하고, 재사용성과 가독성이 높은 코드를 작성할 수 있다.

profile
아무튼, 개발자

0개의 댓글