티스토리 뷰

JavaScript

[JS] 일급객체와 고차함수

예둥 2024. 8. 12. 20:37
자바스크립트에서 '일급 객체(first-class citizen)'는 특정 객체가 다른 객체와 동일하게 취급될 수 있는 능력을 의미한다.

 

일급 객체의  조건

  • 변수에 할당 가능 : 객체를 변수에 할당할 수 있다.
  • 인수로 전달 가능 : 객체를 함수의 인수로 전달할 수 있다.
  • 반환값으로 사용 가능 : 객체를 함수의 반환값으로 사용할 수 있다.

자바스크립트에서는 객체, 배열과 더불어, 함수도 일급 객체로 취급됩니다. 즉, 함수는 변수에 할당할 수 있고, 다른 함수에 인수로 전달할 수 있으며, 다른 함수에서 반환할 수도 있습니다. 이로 인해 자바스크립트는 고차함수(Higher-order function)를 지원하며, 이는 함수형 프로그래밍의 중요한 특성입니다.

 

ex ) 1. 함수가 변수에 할당됨

const mul = (num) => {
	return num * num;
}

 

ex) 2. 함수가 다른 함수에 인수로 전달됨

함수가 일급객체이기에 콜백 함수를 사용할 수 있다. 다른 함수의 인자로 전달되는 함수를 콜백 함수라고 한다.

button.addEventListener('click', () => {console.log("button click"});

 

ex) 3. 함수가 반환값으로 사용됨

함수가 일급객체이기에 고차함수를 만들 수 있다. 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수를 고차함수라고 한다.

const ex1 = () => {
  return () => {
    console.log('hello');
  }
}

 

함수가 일급객체의 특성을 갖고있기 때문에 다른 데이터처럼 자유롭게 사용될 수 있음을 의미하며 따라서, 고차함수, 콜백함수 등 다양한 고급패턴을 사용할 수 있게 된다.

 

고차함수

'고차 함수(Higher-Order Function)'는 다른 함수를 인수로 받거나, 함수를 반환하는 함수를 말한다.

 

일급 객체로서의 함수의 특성을 활용하여, 다른 함수를 인수로 받거나 반환하는 함수인 고차함수를 사용할 수 있습니다.

 

ex) 'map' : 배열의 각 요소에 대해 주어진 콜백 함수를 호출하고, 그 결과를 모아 새로운 배열을 반환한다.

const numArray = [1, 2, 3, 4, 5];

const numArrayMap = numArray.map(function (x) {	// 일급 객체를 인수로 전달
    return x * x;
});

console.log(numArrayMap); // [1, 4, 9, 16, 25]

 

'JavaScript' 카테고리의 다른 글

[JS] ag-Grid 기본 사용법  (0) 2024.11.21
[JS] HTTP 상태 코드  (0) 2024.10.10
[JS] 고차 함수 (Higher-Order Function)  (0) 2024.08.01
[JS] 유사배열  (0) 2024.08.01
[JS] 블록스코프(Block Scope)가 생긴 이유  (0) 2024.07.17