함수와 일급 객체

dev_sang·2022년 6월 29일
1

JavaScript

목록 보기
10/11

이 포스팅은 <모던 자바스크립트 Deep Dive>를 복습하며 작성되었습니다.

일급객체(First-class object)란?


일급 객체의 조건

  • 일급객체는 무명의 리터럴로 생성할 수 있다.
  • 변수 또는 객체, 배열등의 자료구조에 저장할 수 있다.
  • 함수의 매개변술 일급객체를 전달할 수 있다.
  • 함수의 반환값으로 일급객체를 사용할 수 있다.

무명의 리터럴 (Anonymous object)

function(x, y) {
	return x*y
}; ```

예제

// 변수 increase와 변수 decrease에 무명의 리터럴로 만든 함수 할당

const increase = function (num) {
  return ++num;
};

const decrease = function (num) {
  return --num;
};


// increase, decrease에 할당된 변수를 객체 predicates로 저장합니다.
const predicates = { increase, decrease };

console.log(predicates); // predicates:  { increase: [Function: increase], decrease: [Function: decrease] }

// 객체의 저장된 변수를 함수의 매개변수에게 전달하고 리턴값으로 반환합니다.
function makeCounter(predicate) {
  let num = 0;

  return function () {
    num = predicate(num);
    return num;
  };
}

// 함수 makeCounter에 함수 increase를 매개변수로 전달합니다.
const increaser = makeCounter(predicates.increase);
console.log(increaser()); // 1
console.log(increaser()); // 2


// 함수 makeCounter에 함수 decrease를 매개변수로 전달합니다.
const decreaser = makeCounter(predicates.decrease);
console.log(decreaser()); // -1
console.log(decreaser()); // -2

일급 객체로 할 수 있는 것

  • 일반 객체와 같이 함수의 매개변수에 전달할 수 있으며, 함수의 반환값으로 사용할 수도 있습니다.
  • 이는 함수형 프로그래밍을 가능케 하는 자바스크립트의 장점 중 하나입니다.

함수형 프로그래밍이란?
순수 함수를 통해 부수효과를 최대한 억제하고 오류를 피하여 프로그램의 안전성을 높이려는 프로그래밍 패러다임입니다.

순수 함수란?

  • 순수 함수: 어떤 외부 상태?에 의존하지도 않고 변경하지도 않는, 즉 부수 효과가 없는 함수입니다.
  • 비순수 함수: 외부 상태에 의존하거나 외부 상태를 변경하는, 즉 부수 효과가 있는 함수를 비순수 함수입니다.


profile
There is no reason for not trying.

0개의 댓글