본문 바로가기
프로그래밍 언어/JavaScript

함수형 프로그래밍 개요

by zieunee 2021. 7. 18.
반응형

평가 시점이 순수함수가 아닌 함수가 중요하다.

순수함수는 언제 실행해도 상관없어서(동일한 결과를 리턴) 평가 시점이 상관이 없음

평가시점을 다루는것을 통해 다양한 로직을 다룬다.

일급함수

함수를 값으로 다룰 수 있다.

함수를 변수에 담을수도있고, 값으로 다룰수도있고, .. 인자로 넘길수도있다.

  1. 변수를 함수에 담을 수 있다.
  2. var f1 = function(a) {return a * a}; console.log(f1) // 함수로 나옴
  1. 함수가 함수를 인자로 담을 수 있다.언제 평가해도 상관없는 순수함수를 만드는것이 함수형 프로그래밍
  2. return f3(f){ return f(); // 10 /어떤 함수를 인자로 넘기느냐에 따라 다름 } f3(function() { return 10;})
function add_maker(g){
    return function(b){ // 클로저
        return a+b;
    }
}

var add10 = add_maker(10);
// >>> var add10 = return function(b){
//            return 10 + b;
//        } // 요런 느낌임 
console.log(add10(20));

예시

일급함수 + 클로저

function add_maker(a){
    return function(b){ // 클로저
        return a+b;
    }
}

asd

이렇게 a를 참조한다.

function(b){ // 클로저
    return a+b;
}

얘가

function add_maker(a){

}

여기서 받은 a를 참조하여 기억하고 있음

순수함수이기도하다.

function(b){ // 클로저
        return a+b;
    }

a는 변수이지만 참조만 할 뿐 변경을하고있지않는다.

어떤 시점에 평가를해도 동일한 값을 가지고 있음

함수 예제

funcation f4(f1,f2,f3){
     return f3(f1() + f2());
     //         2       1
     //     3*3
}

f4(
    function() {return 2;},
    function() {return 1;},
    function(a) { return a * a}
)

고차함수

함수를 인자를 받아서 실행

함수를 만들어서 리턴하는 함수

2가지 유형의 고차함수가 있다.

*함수를 인자를 받아서 실행 *

  const apply1 = f => f(1); //함수 인자값으로 받아서 실행 
  const add2 = a => a + 2;
  log(apply1(add2));// 3  >>>> a => a + 2;함수를 받아서 안에서 실행 시켜줌
  log(apply1(a => a - 1));

  const times = (f, n) => {
    let i = -1;
    while (++i < n) f(i);
  };

  times(log, 3);

  times(a => log(a + 10), 3);

함수를 만들어서 리턴하는 함수

클로저를 만들어 리턴

  const addMaker = a => b => a + b; // a를 계속해서 기억하고 있다. 
  const add10 = addMaker(10);
  log(add10(5));
  log(add10(10));
반응형

'프로그래밍 언어 > JavaScript' 카테고리의 다른 글

promise  (0) 2022.03.06
this  (0) 2021.08.02
vanlia javascript 에서 router 구현  (0) 2021.07.17
webpack  (0) 2021.07.16
map, filter, reduce  (0) 2021.07.05