함수형 프로그래밍은 프로그래밍의 여러 가지 패러다임중 하나이다.
함수형 프로그래밍이란 함수의 조합으로 작업을 수행하는것을 말한다.
중요한 것은 이 작업이 이루어지는 동안 작업에 필요한 데이터와 상태는 변하지 않고, 변할 수 잇는건 오로지 함수 뿐이라는거다.
자바스크립트에서도 함수형 프로그래밍이 가능한데 그 이유는 자바스크립트가 다음을 지원하기 때문이다.
그래서 함수의 인자로 함수를 넘기고, 결과로도 함수를 받을 수 있다.
배열의 각 원소 총합, 곱한 값 구하기
- 명령형 프로그래밍 방식
// 명령형 프로그래밍 방식의 총합
function sum(arr) {
var i = 0; sum = 0;
for(; i < arr.length; ++i) {
sum += arr[i];
}
return sum;
}
// 명령형 프로그래밍 방식의 총곱
function multiply(arr) {
var i = 0; result = 1;
for(; i < arr.length; ++i) {
result *= arr[i];
}
return result;
}
var arr = [1, 2, 3, 4];
console.log(sum(arr)); // 10
console.log(multiply(arr)); // 24
위 코드는 명령형 프로그래밍 방식으로 작성된 코드다.
문제 하나하나를 각각의 함수를 구현하여 풀고있으며, 배열의 각 원소를 또 다른 방식으로 산술하여 결과값을 얻으려면 새로운 함수를 다시 구현해야한다.
그러나 함수형 프로그래밍 방식을 이용하면 이러한 수고를 덜 수 있다.
- 함수형 프로그래밍 방식
function reduce(fn, arr, memo) {
var len = arr.length;
var i = 0;
var accum = memo;
for( ; i < len; ++i ) {
accum = fn(accum, arr[i]);
}
}
var arr = [1, 2, 3, 4];
var sum = function(x, y) {
return x + y;
};
var multiply = function(x, y) {
return x * y;
};
console.log(reduce(sum, arr, 0)); // 10;
console.log(reduce(multiply, arr, 1)); // 24;
위와 같이 함수형 프로그래밍을 이용하여 코드를 훨씬 간결하게 작성할 수 있다.
또한 다른 문제가 나오더라도 해당 연산을 하는 함수를 작성하여 reduce()함수로 결과를 얻을수 있다.
by 소년코딩
추천은 글쓴이에게 큰 도움이 됩니다.
악플보다 무서운 무플, 댓글은 블로그 운영에 큰 힘이됩니다.