본문 바로가기

함수형 자바스크립트6

함수형 자바스크립트 - 7장 순수성, 불변성, 변경 정책 함수형 프로그래밍은 소프트웨어 개발의 복잡성을 최소화하는 개발 방식을 추구한다. 상태 변화를 최소화 하거나 아예 없애는 것은 복잡성을 줄일 수 있는 방법 중 하나다. 7.1 순수성 function randString(len) { var ascii = repeatedly(len, partial1(rand, 26)); return _.map(ascii, function(n) { return n.toString(36); // 책에 빠져 있음 오타...;;; }).join(''); } randString은 함수에 다른 함수를 이용해 고수준 기능을 구현한 함수이다. 하지만 이전의 다른 차이점이 있다. 'randString'은 테스트를 할 수 있는 가? 7.1.1 순수성과 테스트의 관계 describe("randS.. 2017. 2. 4.
함수형 자바스크립트 - 4장 고차원 함수 고차원 함수 고차원 함수는 일급이다. 함수를 인자로 받는 다. 함수를 결과로 반환한다. 4.1 다른 함수를 인자로 취하는 함수 4.1.1 함수 전달에 대한 고찰 _.max([1,2,3,4,5]) => 5 //가장 큰 수를 찾는 함수 var people = [{name: "Fred", age: 65}, {name: "Lucy", age: 36}]; _.max(people, function(p) { return p.age }); // 두번 째 인자를 함수로 받아 비교할 값을 선택한다. [고차원 함수] //=> {name: "Fred", age: 65} max 함수는 두번째 인자로 함수를 받아 객체에서 비교할 값을 선택할 수 있게 한다. max에서는 '>' 연산자로만 비교가 가능하다. (제한적, 진정한 함수형.. 2017. 2. 3.
함수형 자바스크립트 - 5장 함수로 함수 만들기 함수로 함수 만들기 '왜 함수를 만들며 어떻게 만들 것인가?5.1 함수 조립의 핵심대상이 존재하는 지 확인한다.네이티브 버전이 있는 지 확인하여 있다면 그것을 사용한다.네이티브 버전이 없다면 필요한 동작을 수행할 태스크를 구현한다.function invoker (NAME, METHOD) { return function(target /* args ... */) { if (!existy(target)) fail("Must provide a target"); var targetMethod = target[NAME]; var args = _.rest(arguments); return doWhen((existy(targetMethod) && METHOD === targetMethod), function() { r.. 2017. 1. 23.
함수형 자바스크립트 - 3장 변수 스코프와 클로저 '바인딩', var 할당, 함수 인자 사용, this 전달, 프로퍼티 할당 등의 과정에서 자바스크립트의 이름에 값을 할당하는 행위를 가리킨다. '스코프'라는 단어는 자바스크립트에서 다양한 의미로 해석된다. * this 바인딩값 * this 바인딩값이 정의하는 실행 컨텍스트 * 변수 '생명주기' * 변수값 해석 방식 또는 어휘적 바인딩3.1 전역 스코프스코프의 범위라는 말은 변수의 생명주기를 가리킨다.aGlobalVariable = 'global'; // var 키워드 없이 변수를 정의하면 전역 스코프가 된다. aGlobalVariable = 'modify' // 변수의 속성값을 바로 바꿀 수 있다. aGlobalVariable //-> modify전역 변수 선언은 프로그래밍 방법론에서 좋지 않은 패러다임.. 2017. 1. 14.