// 함수는 무명의 리터럴로 생성할 수 있으며 변수에 저장할 수 있다.
const increase = function(num) {
return num++;
};
const decrease = function(num) {
return num--;
};
// 함수는 객체에 저장할 수 있다.
const operations = { increase, decrease };
// 함수의 반환값으로 사용될 수 있다.
function makeCounter(operation) {
let num = 0;
return function() {
num = operation(num);
return num;
};
}
// 함수의 매개변수에 전달할 수 있다.
const increaser = makeCounter(operations.increase);
console.log(increaser());
// 결과
1
함수형 프로그래밍
- 순수 함수와 보조 함수의 조합을 통해 외부 상태의 변경을 최소화해서 불변성(Immutability)을 지향하는 프로그래밍 패러다임을 말한다.
- 쉽게 말하면 깔끔하고 유지보수가 용이하게 하기위해 효과적으로 함수를 사용하는 것을 말한다.
함수는 객체이지만 일반 객체와는 차이점이 있다.
function add(num) {
return num + num;
}
console.dir(add);
console.log(Object.getOwnPropertyDescriptors(add));
// 결과
{
length: { value: 1, writable: false, enumerable: false, configurable: true },
name: { value: 'add', writable: false, enumerable: false, configurable: true },
arguments: { value: null, writable: false, enumerable: false, configurable: false },
caller: { value: null, writable: false, enumerable: false, configurable: false },
prototype: { value: {}, writable: true, enumerable: false, configurable: false }
}