목차

『함수형 자바스크립트 프로그래밍』

목차

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 문의 사항