함수형 자바스크립트(1)

joDMSoluth·2020년 3월 13일
0

함수형프로그래밍

목록 보기
17/17

순수함수
1. 동일한 인자에 대해 동일한 결과값을 나타내야된다. ( 수학적 함수 )
2. 인자로 받은 값을 변경하지 않는다.
3. return 값 이외에 다른 방식으로 외부상태에 직접 관여하고 소통하면 안된다.
4. 평가 시점이 중요하지 않는다. ( 언제 어떤 위치에서 쓰던 동일한 인자에 대해 동일한 결과값을 나타내야 한다.)

객체의 인자를 이용한 순수함수

var obj1 = { val : 10 };
function add(obj, b) {
  return { val : obj.val +b }
}

add(obj1, 20);
console.log(obj1.val);
var obj2 = add(obj1, 20);
console.log(obj1.val);
console.log(obj2.val);
// obj1의 값을 변경하지 않고 동일한 결과값을 반환하기에 순수함수이다.

일급함수
1. 함수를 언어에서 값으로 다룰 수 있다.

var f1 = function(a) { return a * a; };
console.log(f1);

var f2 = add;
console.log(f2);

function f3(f) {
  return f();
}

console.log(f3(function() { return 10; });)
// output : 10;

  1. 응용) 함수를 리턴하는 함수
/* add_maker */
// 일급함수와 클로저의 개념을 함께 사용

function add_maker(a) {
  return function(b) {
    return a + b;
  }
}
// 여기서 리턴된 함수는 클로저이다.
// a라는 값을 기억하기 때문에 클로저이다.
// 클로저이기 때문에 return된 함수는 순수함수이다.(a 값을 참조만 하기 때문)

var add10 = add_maker(10);
console.log(add10(20));
//output : 30
  1. 응용) 순수함수를 조합해서 큰 로직을 짜는 형태 (형태를 기억)
function f4(f1, f2, f3) {
  return f3(f1() + f2());
}

console.log(
  f4(
    function() { return 2 ; },
    function() { return 1 ; },
  	function(a) { return a * a; }));
profile
풀스택이 되고 싶은 주니어 웹 개발자입니다.

0개의 댓글