일급 객체란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체
함수가 일급객체라는 것은 함수를 객체와 동일하게 사용할 수 없다라는 의미.
// 1. 함수는 무명 리터럴로 생성할 수 있다.
const increase = function (num) {
return ++num;
}
// 2. 함수는 객체에 저장할 수 있다.
const predicates = {increase,decrease};
// 3. 함수의 매개변수에 전달할 수 있다.
// 4. 함수의 반환값으로 사용할 수 있다.
function makeCounter(predicate){
let num = 0;
return function(){
num = predicate(num);
return num;
}
}
함수형 프로그래밍은 함수의 응용을 강조한다.
프로그래밍이 문이 아닌 식이나 선언으로 수행되는 선언형 프로그래밍 패러다임을 따르고 있다.
함수형 프로그래밍에서는
어떤 외부 상태에도 의존하지 않고 외부 상태를 변경하지도 않는 함수
var count = 0;
// 순수함수
function increase(n){
return ++n;
}
// 순수함수가 반환한 결과값을 변수에 재할당해서 상태를 변경
count = increase(count);
console.log(count); //1
외부 상태에 의존하거나 외부 상태를 변경하는 함수
var count = 0;
// 비순수함수
function increase(){
return ++count;
}
// 비순수함수는 외부 상태를 변경해 상태 변화를 추적하기 어려움.
increase();
console.log(count); //1