섹션1. 함수형 프로그래밍 개요

리리·2021년 7월 17일

TIL

목록 보기
4/22

함수형 프로그래밍

함수형 프로그래밍 = 성공적인 프로그래밍을 위해 조합성을 강조하는 프로그래밍 패러다임.

부수효과를 미워함 → 순수함수를 만든다 → 오류를 줄이고 안정성을 높인다

조합성을 강조 →모듈화 수준을 높인다 → 생산성을 높인다.

순수함수

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

순수함수인 이유는 항상 동일한 인자를 주면 동일한 결과를 리턴한다.

둘째로는 부수효과가 없다. 함수가 리턴값으로 결과를 만드는 것 외에 외부에 영향을 미치는 것을 부수효과라고 하는데, 그게 없음.

동일한 인자를 줬을 때, 다른 결과 값이 나타나는 경우는 ?

var c = 10;
//만일 c가 상수이면 add2도 순수함수라고 할 수 있다. 그러나, 
function add2(a , b){
	return a + b+c;
}
console.log(add2(10,5));
c = 20; //이렇게 c값이 바뀌어서 결과값이 바뀔 경우, 순수함수라고 할 수 없다. 
console.log(add2(10,5));

부수 효과가 있는 함수. 외부에 영향을 미친다.

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

		console.log(c); // c = 20
		console.log(add3(10,5));
		console.log(c); // c = 5
		// 이 경우, c 값은 두 번 다 달라진다.

인자가

var obj1 = {val : 10};
function add4(obj, b) {
	abj.val += b;
}
console.log(obj1.val); // val = 10
add4(obj1, 20);
console.log(obj1.val); // val = 20

인자의 상태를 직접 변경하고 있어서 순수함수가 아니다. 함수형 ㅍ프로그래밍에서는 객체의 값들을 변형하지만, 순수함수 사용. 원래 값은 그대로 있고, 그 값을 복사하여 새로운 값을 리턴하는식으로 함수를 만든다.

아래는 순수함수.

var obj1 = {val : 10};
function add5(obj, b) {
	return obj.val + b;
}
console.log(obj1.val); // val = 10
var obj2 = add4(obj1, 20)); // obj2.val = 30
console.log(obj1.val); // val = 10

또한, 순수함수는 어느 타이밍에 함수를 호출하느냐에 따라서 (평가시점에 따라서) 값이 변경되지 않는다.

일급 함수

js에서는 일급 함수를 사용한다.

일급 함수 = 함수를 값으로 다룰 수 있다. 함수를 변수에 담을 수 있고, 인자로 넘겨지거나, 인자로 넘겨져서 다른 함수를 실행시키거나...등을 할 수 있다.

0개의 댓글