[무료] 자바스크립트로 알아보는 함수형 프로그래밍 (ES5) - 인프런 | 강의

마플(http://www.marpple.com)의 CTO 유인동님이 알려주는 함수형 프로그래밍에 대한 강좌 입니다. 함수형 프로그래밍으로 라이브러리를 직접 만들어가며 함수형 프로그래밍의 패러다임과 코딩의 즐거

www.inflearn.com

함수형 프로그래밍은 부수효과(side effect)를 배제하고 조합성을 강조하는 프로그래밍 패러다임

 

순수함수

//순수함수 예시
function add(a,b){
    return a+b;
}
console.log(add(12,34));
console.log(add(12,34));

순수 함수는 항상 동일한 결과를 리턴한다. 

//부수효과 예시
let sideEffect1 = 10;
function add2(a,b){
    return add(a,b)+ sideEffect1;
}
console.log(add2(10,20));
sideEffect1 = 20;
console.log(add2(10,20));

외부 인자에 영향을 받는다.

let sideEffect2 = 10;
function add3(a,b){
    sideEffect1 = a; // 외부에 영향을 준다
    sideEffect2 = b;
    return add(a,b);
}
console.log(add3(10,20));
console.log(add3(10,20));

항상 같은 결과를 리턴하지만, 함수가 외부에 영향을 미치고 있다.

함수형 프로그래밍에선 원래 값을 유지하며, 새로운 값을 만들어 가공해 리턴한다.

//새로운 값을 만든다는 것은 Call By Reference가 대상이다.
const arr = [1,2,3,4,5];
function multiplyArr(arr){
    //새로운 값
    const result = arr.slice();
    for(const idx in result){
        result[idx] = result[idx] * 2;
    }
    return result;
}
console.log(multiplyArr(arr));
console.log(arr);

순수함수는 평가 시점이 중요하지 않다. 아무때나 호출해도 항상 같은 결과를 리턴한다.

 

일급함수

함수를 변수에 담는 것

즉, 함수를 값처럼 다룰 수 있다는 의미로, 이는 변수로 다른 함수의 인자로, 혹은 함수의 반환 값으로 함수가 올 수도 있다는 의미다.

//일급함수
const get10 = () => 10; //함수를 변수에 담는다.
//함수를 인자로 받는 함수, 함수를 변수에 담았음
const add30 = function(fn){
    return 30 + fn();
}
//인자로 함수를 전달했다.
console.log(add30(get10));

함수와 메서드 차이

//함수는 단독으로 존재할 수 있다.
function hello(name){
    console.log("hello "+name);
}
//메서드는 클래스 속에 존재한다.
class Hello{
    hello(name){
        console.log("hello "+name);
    }
}
hello("홍길동");
new Hello().hello("홍길동");

 

function.html
0.00MB

+ Recent posts