1장 함수형 자바스크립트 소개
__1.1 함수형 프로그래밍 그거 먹는 건가요?
____1.1.1 함수형 자바스크립트를 검색하면 나오는 예제
____1.1.2 값으로써의 함수와 클로저
__1.2 함수형 자바스크립트의 실용성
____1.2.1 회원 목록 중 여러 명 찾기
____1.2.2 for에서 filter로, if에서 predicate로
____1.2.3 함수형 프로그래밍 관점으로 filter 보기
____1.2.4 map 함수
____1.2.5 실행 결과로 바로 실행하기
____1.2.6 함수를 값으로 다룬 예제의 실용성
__1.3 함수형 자바스크립트의 실용성 2
____1.3.1 회원 목록 중 한 명 찾기
____1.3.2 값에서 함수로
____1.3.3 함수를 만드는 함수와 find, filter 조합하기
____1.3.4 고차 함수
____1.3.5 function identity(v) { return v; }, 이건 어디다 쓰는 거지?
____1.3.6 연산자 대신 함수로
____1.3.7 함수 합성
__1.4 함수형 자바스크립트를 위한 기초
____1.4.1 일급 함수
____1.4.2 클로저
____1.4.3 클로저의 실용 사례
____1.4.4 클로저를 많이 사용하라!
____1.4.5 고차 함수
____1.4.6 콜백 함수라 잘못 불리는 보조 함수
____1.4.7 함수를 리턴하는 함수와 부분 적용
__1.5 정리
2장 함수형 자바스크립트를 위한 문법 다시 보기
__2.1 객체와 대괄호 다시 보기
____2.1.1 난해해 보이는 문법들을 확인하는 목적
____2.1.2 객체와 key
____2.1.3 함수나 배열에 달기
____2.1.4 delete
____2.1.5 코드가 실행될 수 있는 영역
__2.2 함수 정의 다시 보기
____2.2.1 기본 정의
____2.2.2 호이스팅
____2.2.3 호이스팅 활용하기
____2.2.4 괄호 없이 즉시 실행하기
____2.2.5 new Function이나 eval을 써도 될까요?
____2.2.6 간단 버전 문자열 화살표 함수와 new Function 성능
____2.2.7 유명(named) 함수
____2.2.8 유명 함수를 이용한 재귀
____2.2.9 자바스크립트에서 재귀의 아쉬움
__2.3 함수 실행과 인자 그리고 점 다시 보기
____2.3.1 ( ) 다시 보기
____2.3.2 인자 다시 보기
____2.3.3 this 다시 보기
____2.3.4 call, apply 다시 보기
____2.3.5 call의 실용적 사례
__2.4 if else || && 삼항 연산자 다시 보기
____2.4.1 if의 괄호
____2.4.2 || &&
____2.4.3 삼항 연산자
__2.5 함수 실행의 괄호
____2.5.1 함수 실행을 통해 생기는 새로운 공간
____2.5.2 기본적인 비동기 상황
____2.5.3 함수 실행 괄호의 마법과 비동기
____2.5.4 비동기와 재귀
__2.6 화살표 함수
____2.6.1 익명 함수와의 문법 비교
____2.6.2 익명 함수와의 기능 비교
____2.6.3 화살표 함수의 실용 사례
____2.6.4 화살표 함수 재귀
__2.7 정리
3장 Underscore.js를 직접 만들며 함수형 자바스크립트의 뼈대 익히기
__3.1 Underscore.js 소개
____3.1.1 Underscore.js 간단히 써보기
____3.1.2 Underscore.js vs. Lodash
____3.1.3 지연 평가 1 (take)
____3.1.4 지연 평가 2 (map->map->map)
____3.1.5 지연 실행
____3.1.6 함수형 프로그래밍 관점에서의 each
____3.1.7 지원 환경, 용량, 추가 기능 비교
____3.1.8 Underscore.js와 Lodash 비교 정리
____3.1.9 Underscore.js를 만드는 이유
__3.2 _.map과 _.each 구현하기
____3.2.1 ArrayLike와 Underscore.js의 콘셉트
____3.2.2 _.map 만들기
____3.2.3 쓸모 없어 보이는 함수 사용하기
____3.2.4 _.each 만들기
____3.2.5 함수로 함수 만들기, bloop
____3.2.6 Object.keys
____3.2.7 bloop 개선하기
____3.2.8 중간 정리
__3.3 _.filter, _.reject, _.find, _.some, _.every 만들기
____3.3.1 _.filter 만들기
____3.3.2 bloop로 _.filter 만들기
____3.3.3 _.rest, _.toArray, _.reverse, _.if
____3.3.4 익명 함수 없이 bloop로 _.filter 만들기
____3.3.5 _.reject 만들기
____3.3.6 _.find, _.some, _.every를 만들기 위해 bloop 고치기
____3.3.7 _.find 만들기
____3.3.8 _.findIndex, _.findKey 만들기
____3.3.9 _.some, _.every 만들기
____3.3.10 함수형 프로그래밍에서 함수는 ‘로직’이다!
__3.4 _.reduce 만들기
____3.4.1 _.reduce 소개
____3.4.2 _.reduce의 용도
____3.4.3 _.reduce로 회원 데이터 집계하기
____3.4.4 _.reduce 만들기
____3.4.5 bloop 반으로 줄이기
__3.5 좀 더 발전시키기
____3.5.1 _.filter 중간에 나가기
____3.5.2 코드 양과 성능
4장 함수 조립하기
__4.1 고차 함수와 보조 함수
____4.1.1 한 번만 실행하는 함수
____4.1.2 다시 물어 보지 않는 함수
____4.1.3 앞서 받은 인자 혹은 상황을 변경해 나가는 경우
____4.1.4 앞서 받은 인자를 잘 유지해야 하는 경우
__4.2 부분 적용
____4.2.1 _.partial로 함수 만들기
____4.2.2 _.partial과 _.compose로 함수 만들기
____4.2.3 더 나은 _.partial 함수
__4.3 연속적인 함수 실행
____4.3.1 체인의 아쉬운 점
____4.3.2 _.compose의 아쉬운 점
____4.3.3 파이프라인
____4.3.4 클래스를 대신하는 파이프라인
____4.3.5 더 나은 파이프라인, 그리고 Multiple Results
__4.4 더 나은 함수 조립
____4.4.1 함수 조립과 Partial.js
____4.4.2 Partial.js의 _.pipe
____4.4.3 즉시 실행 파이프라인 _.go
____4.4.4 문자열 화살표 함수
____4.4.5 Partial.js의 _.partial
____4.4.6 Partial.js의 부분 커링
5장 Partial.js와 함수 조립
__5.1 파이프라인
____5.1.1 네임스페이스
____5.1.2 즉시 실행 파이프라인, _.go와 _.mr
____5.1.3 함수를 만드는 파이프라인 _.pipe
____5.1.4 부분 커링 함수와의 조합
____5.1.5 보조 함수로 사용하는 파이프라인
____5.1.6 비동기와 _.go
____5.1.7 중간에 멈추고 나가기
__5.2 비동기
____5.2.1 코드 변경 없이 비동기 제어가 되는 고차 함수
____5.2.2 비동기 결과를 기다리는 if문, _.if
__5.3 고차 함수
____5.3.1 주요 고차 함수의 보조 함수에서 더 많은 인자 사용하기
____5.3.2 _.all, _.spread
__5.4 파이프라인2
____5.4.1 _.go에서 this 사용
____5.4.2 또 다른 파이프라인, _.indent
____5.4.3 _, _ _, _ _ _
____5.4.4 무조건 비동기로 동작하는 _.async
____5.4.5 _.go에서 비동기 제어 건너뛰기
__5.5 템플릿 함수
____5.5.1 함수 스타일의 템플릿 함수
____5.5.2 Jade(Pug) 스타일 문법 지원
____5.5.3 데이터 치환
____5.5.4 일반 HTML 전용 _.string
____5.5.5 인자 여러 개 받기
____5.5.6 escape
____5.5.7 코드 실행
____5.5.8 _.sum
____5.5.9 비동기 제어
__5.6 지연 평가와 컬렉션 중심 프로그래밍
____5.6.1 지연 평가
____5.6.2 Lodash의 체인 방식 지연 평가가 아쉬운 이유
____5.6.3 지연 평가 결정의 기준과 L
____5.6.4 컬렉션 중심 프로그래밍
____5.6.5 수집하기와 거르기
____5.6.6 접기
____5.6.7 찾아내기
____5.6.8 3가지 유형(수집하기, 거르기, 찾아내기)과 지연 평가와의 연관성
____5.6.9 더 나은 지연 평가
____5.6.10 지연 평가의 동작 조건을 동적으로 하기
____5.6.11 Partial.js
6장 값에 대해
__6.1 순수 함수
____6.1.1 순수 함수와 부수 효과
____6.1.2 순수 함수와 순수 함수가 아닌 함수
__6.2 변경 최소화와 불변 객체
____6.2.1 직접 변경하는 대신, 변경된 새로운 값을 만드는 전략: _.sortBy, _.reject, _.pluck, _.initial, _.without
____6.2.2 _.clone으로 복사하기
____6.2.3 _.extend, _.defaults로 복사하기
____6.2.4 불변 객체, 그리고 immutable.js의 훌륭한 점
____6.2.5 immutable.js의 아쉬운 점
____6.2.6 Model/Collection 류의 커스텀 객체들의 아쉬운 점
__6.3 기본 객체 다루기
____6.3.1 _.sel과 JSON Selector로 중첩 구조 데이터 다루기
____6.3.2 JSON Selector를 이용한 값 변경
____6.3.3 커스텀 객체 vs 기본 객체
____6.3.4 _.set, _.unset, _.remove2, _.pop, _.shift, _.push, _.unshift
____6.3.5 _.set을 통한 값 변경을 함수로 하기
____6.3.6 깊은 값 꺼내기: _.deep_pluck
__6.4 정리
7장 실전에서 함수형 자바스크립트 더 많이 사용하기
__7.1 _.each, _.map
____7.1.1 if 대신 _.each 사용하기
____7.1.2 선택된 항목들 지우기와 _.map
____7.1.3 SQL의 insert문 만들기와 _.map
____7.1.4 그룹 채팅 초대와 _.map
____7.1.5 함수 고르기
____7.1.6 많은 사람들이 기본 객체와 함수 중심으로 프로그래밍을 한다면
__7.2 input tag들을 통해 form data 만들기
____7.2.1 _.reduce로 만들기
____7.2.2 여러 가지 함수로 함수 조합 연습해 보기
__7.3 커머스 서비스 코드 조각
____7.3.1 장바구니에 담기 옵션 선택과 _.find
____7.3.2 _.find_where
____7.3.3 장바구니에 담긴 상품들의 수량 합산하기와 _.reduce
____7.3.4 장바구니에 담긴 상품들의 금액 합산하기와 _.reduce
____7.3.5 다른 함수 조합으로 수량 합산 구하기 _.deep_pluck, _.reduce
__7.4 백엔드와 비동기
____7.4.1 백엔드에서 만날 수 있는 다양한 비동기 상황
____7.4.2 순서대로 하나씩 실행하기
____7.4.3 실행한 후의 결과 담기
____7.4.4 true를 만나면 그만 돌기
____7.4.5 _.if _.some, _.every 조합하기
____7.4.6 _.loop와 _.break
____7.4.7 async await 그리고 Babel은 모든 비동기 상황의 해결책일까?
____7.4.8 async await를 for문과 if문에서 사용하기
____7.4.9 async await의 한계
____7.4.10 함수를 값으로 다루는 고차 함수의 해법
8장 함수형으로 만드는 할 일 앱
__8.1 할 일 앱 만들기(1)
____8.1.1 할 일 생성하기
____8.1.2 체크박스와 삭제 버튼
____8.1.3 앱의 상태 관리를 위한 데이터 추가
____8.1.4 필터링 기능 추가하기
____8.1.5 한 일 모두 삭제하기
__8.2 할 일 앱 만들기(2)
____8.2.1 카운트 정보 표시하기
9장 메모이제이션
__9.1 memoize 함수
____9.1.1 메모이제이션 코드로 이해하기
____9.1.2 Underscore.js의 _.memoize
____9.1.3 Partial.js의 _.memoize2
____9.1.4 _.memoize2 내부와 JSON.stringify
__9.2 메모이제이션과 불변성, 그리고 할 일 앱
____9.2.1 할 일 앱에 _.memoize2 적용시키기
____9.2.2 최종 코드
__9.3 마무리 하며
____9.3.1 인프런(Inflearn) 동영상 강의 : 자바스크립트로 알아보는 함수형 프로그래밍
____9.3.2 몇 가지 프로젝트 소개
____9.3.3 문의 사항