Programming/Javascript (78) 썸네일형 리스트형 14. Javascript 함수형 프로그래밍(5) - 피보나치 수열 구현하기 앞서 살펴본 팩토리얼 구현 방식을 응용해, 이번엔 피보나치 수열을 함수형 프로그래밍으로 구현해보도록 하겠습니다. var fibo = function() { var cache = {'0' : 0, '1' : 1}; var func = function(n) { var result = 0; if (typeof(cache[n]) === 'number') { result = cache[n]; } else { result = cache[n] = func(n-1) + func(n-2); } return result; } return func; }(); console.log(fibo(10)); 유사한 방식으로 코드를 구현했습니다. 역시 cache에 캐시 값을 저장해, 수열 연산을 구현하는 즉시 실행 함수 형태와 클로저.. 14. Javascript 함수형 프로그래밍(4) - 팩토리얼 구현하기 이번에는 팩토리얼을 함수형 프로그래밍을 통해 구현하는 방법을 살펴보도록 하겠습니다. 우선은, 우리가 익히 알고 있는 명령형 프로그래밍 방식으로 함수 factorial을 구현해 보겠습니다. function factorial(num) { var val = 1; for(var i = 1; i 14. Javascript 함수형 프로그래밍(3) - 배열의 원소 계산하기 앞서 배웠던 함수형 프로그래밍의 개념을 잘 회고해 본 다음, 실제로 적용하는 연습을 해보도록 하겠습니다. 우선, 기본적으로 수열에서 배웠던 시그마 기호를 코드로 구현하는 과정을 살펴볼까요? 다음과 같이, 어떤 배열의 원소들을 모두 더하는 코드, 그리고 곱하는 코드를 구현한다고 가정해 봅시다. 함수의 이름은 각각 sum과 multiply로 정해보겠습니다. 그리고 각각의 함수를 기본적인 방식으로 구현해 봅시다. function sum(arr) { var len = arr.length; var i = 0; var sum = 0; for(; i < len; i++){ sum += arr[i]; } return sum; } var arr = [1, 2, 3, 4, 5]; console.log(sum(arr)); .. 14. Javascript 함수형 프로그래밍(2) - 함수형 프로그래밍 기본 우선 Javascript에서 앞서 설명한 함수형 프로그래밍 개념의 구현이 가능한 이유는 무엇일까요? 다름 아닌 Javascript 초반에 살펴본 성질로 인해 가능한 방식입니다. [일급 객체로서의 함수], 그리고 [클로저] 때문이지요. Javascript에서는 함수가 일급 객체로 취급 받기 때문에 어떠한 함수의 '인자'로서 함수를 전달할 수 있고, 결과로써 함수를 반활할 수도 있다고 했습니다. 이를 통해 함수 자체의 유연한 전달과 사용이 가능하게 되지요. 여기에 더하여, 클로저 속성을 활용하여 다른 데이터에 영향을 주지 않는 형태로 실행이 가능하게 됩니다. 언뜻 설명만으로는 잘 이해가 가지 않습니다. 이러한 속성을 확인하기 위하여, 앞서 살펴보았던 암호화 관련 함수형 프로그래밍 예제를 실제 코드로 작성해 .. 14. Javascript 함수형 프로그래밍(1) - 개념 함수형 프로그래밍이라는 용어의 개념이 단순하게 정의될 수 있는 성격의 것은 아닙니다. 여기서는 최대한 프로그래밍 기초 지식이 있는 사람들이 쉽게 이해할 수 있는(제가 이해하는) 수준으로 정의를 정리해 보겠습니다. 몇 가지 함수형 프로그래밍이 구성되는 개념적인 정의 요건을 확인해 볼까요? 함수의 조합으로 작업을 수행한다. 작업에 필요한 데이터와 상태 값은 변하지 않는다. 변할 수 있는 것은 오직 함수이다. 함수형 프로그래밍의 연산 대상은 이 '함수'이다. 위의 조건들이 텍스트로는 잘 이해가 가지 않을 것입니다. 우선, 한가지 예시를 들어 함수형 프로그래밍의 구조를 설명해 보도록 하겠습니다. 우선, 아래와 같은 구조의 코드를 작성한다고 가정해 봅시다. - get_encrypted(func) 라는 함수는, 특.. 13. Javascript 객체지향 프로그래밍(5) - subClass 구현하기 5 이제 앞서 작성해본 subClass 함수를 사용해서, 실제로 상속을 실행하는 예제 코드를 만들어 보겠습니다. function subClass(obj) { var parent = this === window ? Function : this; var F = function() {}; var child = function() { var _parent = child.parent; if(_parent && _parent !== Function) { _parent.apply(this, arguments); } if(child.prototype._init) { child.prototype._init.apply(this, arguments); } }; F.prototype = parent.prototype; child.. 13. Javascript 객체지향 프로그래밍(5) - subClass 구현하기 4 앞서 작성한 예제 코드를 정리해 보겠습니다. 다음과 같이 subClass 함수가 어느 정도 모양새를 갖추었습니다. function subClass(obj) { var parent = this; var F = function() {}; var child = function() { var _parent = child.parent_constructor; if(_parent && _parent !== Function) { _parent.apply(this, arguments); } if(child.prototype.hasOwnProperty("_init")) { child.prototype._init.apply(this, arguments); } }; F.prototype = parent.prototype; c.. 13. Javascript 객체지향 프로그래밍(5) - subClass 구현하기 3 앞서 살펴본 subClass 예제 코드에서, 부모 객체의 생성자를 함께 호출하는 선언문 내용을 추가하는 과정을 자세하게 살펴보도록 하겠습니다. 이 과정에서 몇 가지 한계점을 발견하고, 문제점을 보완하는 순서로 진행하겠습니다. 우선 기존 작성 예제 코드를 다시 한번 살펴보겠습니다. function subClass(obj) { var parent = this; var F = function() {}; var child = function() {}; F.prototype = parent.prototype; child.prototype = new F(); child.prototype.constructor = child; child.parent = parent.prototype; child.parent_const.. 이전 1 2 3 4 5 ··· 10 다음 목록 더보기