Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

박철순

함수형 프로그래밍 - 1 본문

Javascript/함수형 프로그래밍

함수형 프로그래밍 - 1

박철순입니다 2022. 8. 24. 23:34

해당 글은 인프런에 "자바스크립트로 알아보는 함수형 프로그래밍(ES5)"를 보고 작성했습니다.

그리고 저의 메모겸 생각정리를 위해 틀린 내용이 있을 수 있습니다.

https://www.inflearn.com/course/%ED%95%A8%EC%88%98%ED%98%95-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/dashboard

 

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

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

www.inflearn.com

 

함수형 프로그래밍이란?

 - 부수 효과를 미워하고, 조합성을 강조한다.

 - 순수함수로 조합하는 프로그래밍이다.

 - 모듈화 수준이 높다.

 

순수함수란?

 - 순수 함수는 부수효과가 없는 함수이다.

 - 들어온 인자가 같으면 언제 어디서든 호출해도 항상 동일한 결과를 리턴함. (중요)

 - 함수가 받은 인자 외에 외부상태에 영향을 끼치지 않는다. 리턴값 외에는 외부와 소통이 없는 함수

 

function add(a,b) {
  return a + b;
}

const addNumber1 = add(1,3) // 4
const addNumber2 = add(2,8) // 10

let c = 10; 
function add2(a,b) {
  return a + b + c;
}

const add2Number = add2(1,5) // 16

let c = 20;
function add3(a,b) {
  c = b;
  return a + b;
}

console.log(c); // 20
const add3Number = add3(20,30); // 50
console.log(c); // 30

const obj1 = { val : 10 };
function add4(obj,b) {
  obj.val += b;
}

console.log(obj1.val); // 10
const add4Number = add4(obj1, 20);
console.log(obj1.val); // 30

const obj2 = { val : 10 };
function add5(obj, b) {
  return { val : obj.val + b };
}

console.log(obj2.val) // 10;
const add5Number = add5(obj2, 20);
console.log(obj2.val) // 10;

위 코드를 보면 add는 순수함수지만 add2는 순수함수가 아닙니다.

왜냐하면 c라는 변수로 부수효과가 생기기 때문에 만약 add2Number 밑에 c 의 값을 바꾸게 되면, 같은 인자여도 다른 결과값이 나오기 때문에 순수함수가 아닙니다. 그러나 c 변수가 상수이면 순수함수입니다.

 

add3 는 같은인자를 넣으면 같은 결과값이 나오지만, 외부의 값을 함수 내에 변경는 부수효과가 있기 때문에 순수함수가 아닙니다.

 

add4는 리턴값도 없고 인자로 들어온 상태를 직접 변경하는 함수이기때문에 순수함수가 아닙니다.

 

그러면 함수형프로그래밍에서 객체를 사용할때는?

- 객체의 값들을 복사해서 원하는 부분에 값이 변형된 새로운 값이 리턴해서 사용하면 됩니다.

위 코드에 add5처럼 입니다.

'Javascript > 함수형 프로그래밍' 카테고리의 다른 글

함수형 프로그래밍 - 2  (0) 2022.08.26