Posts /

순수함수, 일급함수

Twitter Facebook Google+
30 Jul 2019

순수함수, 일급함수

순수함수

function add(a,b){
    return a + b;
}
console.log( add(10,5) );

add는 순수함수다. 언제, 어디서 실행해도 add(10,5)는 항상 15를 리턴하고 외부 상태를 변경하지 않았기 때문이다.

var c = 10;
function add2(a,b){
    return a + b + c;
}
console.log(add2(10,3));
console.log(add2(10,3));
c = 20;
console.log(add2(10,3));

add2는 순수 함수가 아니다. 함수내에서 외부의 c라는 변수 값이 변하면 결과값도 달라지기 때문이다. 만약 c가 상수 즉, 변하지 않는 수라면 add2는 순수 함수다. 외부의 값을 참조해도 결과값이 동일한 인자에 대해서 같기 때문이다.

일급함수

var f1 = function(a) { return a * a; }; // 변수에 함수를 담았다.
console.log(f1); // ƒ (a) { return a * a; }

// 함수를 리턴하는 함수
function add_maker(a) {
 return function(b) {
   return a + b;
 }
}
var add10 = add_maker(10);

console.log( add10(20) ); // 30
var add5 = add_maker(5); // 위의 함수에 a값이 5로만 변경됬다고 생각하자
var add15 = add_maker(15); // 위의 함수에 a값이 15로만 변경됬다고 생각하자
console.log( add5(10) ); // 15
console.log( add15(10) ); // 25
console.log( add10(20) ); // 30



Twitter Facebook Google+