이 포스팅은 <모던 자바스크립트 Deep Dive>를 복습하며 작성되었습니다.
일급 객체의 조건
무명의 리터럴 (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
함수형 프로그래밍이란?
순수 함수를 통해 부수효과를 최대한 억제하고 오류를 피하여 프로그램의 안전성을 높이려는 프로그래밍 패러다임입니다.
순수 함수란?
- 순수 함수: 어떤 외부 상태?에 의존하지도 않고 변경하지도 않는, 즉 부수 효과가 없는 함수입니다.
- 비순수 함수: 외부 상태에 의존하거나 외부 상태를 변경하는, 즉 부수 효과가 있는 함수를 비순수 함수입니다.