길벗·이지톡

도서 IT전문서/IT입문서

자바스크립트의 모든 것을

깊이 있게, 알기 쉽게!

 

웹 전성시대가 되면서 자바스크립트는 변두리 언어에서 핵심 언어로 부상했다. 많은 사람들이 쓰는 언어가 되면서 프런트엔드에서 백엔드까지 영역을 넓혀왔고, 이는 자바스크립트에 다양한 요구를 하는 계기가 되었다.

자바스크립트는 과거보다 현재 더 빠르게 변화하고 성장하는 언어가 되었고, ES2015부터 ES2020까지 매우 빠르게 발전하고 새로운 기능을 추가해왔다. 오랜 자바스크립트 개발자는 기존의 관습이 익숙해서 새로운 기능에 적응하지 못하고, 새로 입성한 자바스크립트 개발자는 구버전과 신버전 사이에서 혼란을 겪는다.

스택 오버플로에서 자바스크립트 분야 상위 열 명 중에 한 명인 크라우더는 십여 년 이상 개발자들의 질문에 답변하면서 이러한 혼란을 잘 이해하고 있으며, 오랜 습관이 무엇인지, 오래된 습관을 새로운 기능으로 바꾸려면 무엇을 해야 하는지 잘 이해하고 있다.

 

[이 책의 주요 내용]

  • ES2015-ES2020에 추가된 기능과 ES2021에 담기게 될 기능
  • 자바스크립트의 최신 문법. 널 병합 연산자, let과 const, class 문법, private 메서드와 필드, new.target, 화살표 함수, BigInt, async와 await, 제너레이터 함수, 디스트럭처링, 템플릿 리터럴, 공유 메모리, 리플렉션, 위크레프, for-of, for-await-of 등을 설명한다.
  • 새로운 기능과 패턴, 안티 패턴, 모듈, 이터레이션, 제너레이터, 프라미스, 심볼, 프록시, 리플렉션, 위크맵, 위크세트, Atomics 객체, 공유 메모리 등의 기능과 사용 패턴, 주의할 점, 오래된 습관에서 새로운 기능으로 바꾸는 방법을 설명한다.
  • 자주 하는 실수와 개선하는 방법
  • 널리 지원되지 않는 새로운 기능을 사용하는 방법

 

자바스크립트를 사용하다가 막히는 부분이 있다면 인터넷 어딘가에 숨어 있는 정보를 찾아서 해결할 수도 있다. 그러나 폭넓은 설명과 깊이, 내가 무엇을 모르는지도 모르는 것을 알게 해줄 풍부한 지침서를 찾는다면 이 책이라고 할 수 있다. 깊이 알면 내가 더 깊어진다.

 

[관련도서]

리팩토링 자바스크립트

리액트 네이티브를 다루는 기술

Node.js 교과서 개정2판

 

목차

1장 ES2015부터 ES2020까지 그리고 그 이후의 새로운 장난감

__1.1 정의, 이해관계자, 용어

__1.2 “새로운 장난감”은 무엇인가?

__1.3 새로운 장난감은 어떻게 만들어지는가?

__1.4 새로운 장난감을 따라가기

__1.5 오늘의 장난감을 과거의 환경에서, 내일의 장난감을 오늘의 환경에서 사용하기

__1.6 정리하며

 

2장 블록 스코프 선언: let과 const

__2.1 let과 const 소개

__2.2 진짜 블록 스코프

__2.3 반복된 선언은 에러다

__2.4 호이스팅과 일시적 데드존

__2.5 새로운 종류의 전역(global)

__2.6 const: 자바스크립트의 상수

__2.7 루프의 블록 스코프

__2.8 과거 습관을 새롭게

 

3장 새로운 함수 기능

__3.1 화살표 함수와 this, super, 그 외

__3.2 기본값 매개변수

__3.3 “나머지” 연산자

__3.4 매개변수 목록에서 후행 쉼표와 함수 호출

__3.5 함수 name 속성

__3.6 블록 내 함수 선언

__3.7 과거 습관을 새롭게

 

4장 클래스

__4.1 클래스란 무엇인가?

__4.2 새로운 클래스 문법 소개

__4.3 기존 문법과 비교

__4.4 서브클래스 만들기

__4.5 Object.protoype 떠나보내기

__4.6 new.target

__4.7 클래스 선언 대 클래스 표현식

__4.8 앞으로 더 배울 것

__4.9 과거 습관을 새롭게

 

5장 새로운 객체 기능

__5.1 계산된 속성 이름

__5.2 단축 속성

__5.3 객체의 프로토타입 얻기와 설정하기

__5.4 메서드 문법과 super 외부 클래스

__5.5 심볼

__5.6 새로운 객체 함수

__5.7 Symbol.toPrimitive

__5.8 속성 순서

__5.9 속성 스프레드 구문

__5.10 과거 습관을 새롭게

 

6장 이터러블, 이터레이터, for-of, 이터러블 스프레드, 제너레이터

__6.1 이터레이터, 이터러블, for-of 루프, 이터러블 스프레드 구문

__6.2 제너레이터 함수

__6.3 과거 습관을 새롭게

 

7장 디스트럭처링

__7.1 개요

__7.2 기본 객체 디스트럭처링

__7.3 기본 배열(과 이터러블) 디스트럭처링

__7.4 기본값

__7.5 디스트럭처링 패턴에서 나머지 문법

__7.6 다른 이름 사용하기

__7.7 계산된 속성 이름

__7.8 중첩된 디스트럭처링

__7.9 매개변수 디스트럭처링

__7.10 반복문에서 디스트럭처링

__7.11 과거 습관을 새롭게

 

8장 프라미스

__8.1 왜 프라미스를 사용하는가?

__8.2 프라미스 기초

__8.3 기존 프라미스 사용하기

__8.4 기존 프라미스에 핸들러 추가하기

__8.5 프라미스 만들기

__8.6 그 외 프라미스 메서드

__8.7 프라미스 패턴

__8.8 프라미스 안티 패턴

__8.9 프라미스 서브클래스

__8.10 과거 습관을 새롭게

 

9장 비동기 함수, 이터레이터, 제너레이터

__9.1 async 함수

__9.2 비동기 이터레이터, 이터러블, 제너레이터

__9.3 과거 습관을 새롭게

 

10장 템플릿, 태그 함수, 새로운 문자열 함수

__10.1 템플릿 리터럴

__10.2 향상된 유니코드 지원

__10.3 반복

__10.4 새로운 문자열 메서드

__10.5 match, split, search, replace 메서드 업데이트

__10.6 과거 습관을 새롭게

 

11장 새로운 배열 함수, 타입이 있는 배열

__11.1 새로운 배열 메서드

__11.2 반복, 스프레드, 디스트럭처링

__11.3 배열 순서 유지 정렬

__11.4 타입이 있는 배열

__11.5 과거 습관을 새롭게

 

12장 맵과 세트

__12.1 맵

__12.2 세트

__12.3 위크맵

__12.4 위크세트

__12.5 과거 습관을 새롭게

 

13장 모듈

__13.1 모듈 소개

__13.2 모듈 기초

__13.3 익스포트를 다시 이름 짓기

__13.4 다른 모듈의 익스포트를 다시 익스포트하기

__13.5 임포트를 다시 이름 짓기

__13.6 모듈의 네임스페이스 객체 임포트하기

__13.7 다른 모듈의 네임스페이스 객체 익스포트하기

__13.8 단지 사이드 이펙트를 위해 모듈 임포트하기

__13.9 임포트와 익스포트 엔트리

__13.10 임포트는 살아있고 읽기 전용이다

__13.11 모듈 인스턴스는 영역 전용이다

__13.12 어떻게 모듈을 읽어 오는가?

__13.13 임포트/익스포트 문법을 정리하며

__13.14 동적 임포트

__13.15 트리 셰이킹

__13.16 번들링

__13.17 메타데이터 임포트하기

__13.18 워커 모듈

__13.19 과거 습관을 새롭게

 

14장 리플렉션-리플렉트와 프록시

__14.1 리플렉트

__14.2 프록시

__14.3 과거 습관을 새롭게

 

15장 정규 표현식 업데이트

__15.1 플래그 속성

__15.2 새로운 플래그

__15.3 명명된 캡처 그룹

__15.4 후방 탐색 지정

__15.5 유니코드 기능

__15.6 과거 습관을 새롭게

 

16장 공유 메모리

__16.1 소개

__16.2 위험! 이곳에는 용이 살고 있다!

__16.3 브라우저 지원

__16.4 공유 메모리 기초

__16.5 객체가 아니라 메모리가 공유된다

__16.6 레이스 컨디션, 비순차 저장, 신선하지 않은 값, 찢어짐 등

__16.7 Atomics 객체

__16.8 공유 메모리 예

__16.9 이곳에는 용이 살고 있다! (한 번 더)

__16.10 과거 습관을 새롭게

 

17장 그 외

__17.1 BigInt

__17.2 새로운 정수 리터럴

__17.3 새로운 수학 메서드

__17.4 지수 연산자(**)

__17.5 Date.prototype.toString 변경

__17.6 Function.prototype.toString 변경

__17.7 숫자 추가

__17.8 Symbol.isConcatSpreadable

__17.9 다양한 구문 수정

__17.10 다양한 표준 라이브러리 / 전역 추가

__17.11 부속서 B: 브라우저 전용 기능

__17.12 꼬리 호출 최적화

__17.13 과거 습관을 새롭게

 

18장 예정된 클래스 기능

__18.1 퍼블릭과 프라이빗 클래스 필드, 메서드, 접근자

__18.2 과거 습관을 새롭게

 

19장 앞으로 나올 예정인 기능

__19.1 최상위 수준 await

__19.2 위크레프와 클린업 콜백

__19.3 정규 표현식 일치 색인

__19.4 String.prototype.replaceAll

__19.5 Atomics asyncWait

__19.6 다양한 구문 변경

__19.7 사라지게 될 레거시 정규 표현식 기능

__19.8 독자에게 감사!

 

부록 A 신비한 기능 사전(J. K. 롤링에게 사과한다)

A.1 기능(알파벳순)

A.2 새로운 기본

A.3 새로운 구문, 키워드, 연산자, 루프, 그 외

A.4 새로운 리터럴 양식

A.5 표준 라이브러리 추가와 변경

A.6 기타

 

 

더보기접기

저자

ㆍ지은이 T. J. 크라우더

지은이 소개
T. J. 크라우더(T. J. Crowder)는 30년의 전문 경력을 가진 소프트웨어 엔지니어로서 경력의 절반 이상은 자바스크립트를 사용하여 작업했다. 그는 영국의 소프트웨어 컨설팅과 제품 회사인 파사이트 소프트웨어를 운영하고 있다. 스택 오버플로우의 상위 10위 기여자 중 한 명이자 자바스크립트 태그의 상위 기여자로서, 그는 지식을 전달하는 것뿐만 아니라 문제를 해결하는 과정과 함께 도움을 주는 데 중점을 두고 자신이 배운 기술을 사용하여 다른 사람들이 직면한 기술적인 문제를 해결하는 것을 좋아한다.

ㆍ옮긴이 조현석

옮긴이 소개
컨스택츠에서 안부를 묻는 글로벌 소셜 네트워크 서비스를 만들고 있다. 다양한 분야에 관심이 있고 한번 궁금한 것은 못 참기 때문에 고생을 사서 하는 편이다. 한양대학교 융합전자공학부를 졸업했고 카카오, AB180, 11번가 등에서 일했다.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.