책 소개
요약
MDN 추천!
아마존 자바스크립트 프로그래밍, 웹 서비스 부문 1위!
자바스크립트 초급 이상, 중급 개발자를 위한 내용을 담고 있다. 기본적인 프로그래밍 요소부터 심도 있는 프로그래밍 요소까지 다루며, 간결한 예제와 적당한 규모의 프로젝트 예제를 통해 프로그래밍 기술을 향상시킬 수 있다. 온라인으로 제공되는 웹 페이지에서 샌드박스를 통해 직접 코드를 수정해가며 원리를 학습할 수 있다.
이 책에 쏟아진 찬사
“내가 읽어본 프로그래밍 개념에 대한 최고의 설명이다.”
— IT WORLD의 산드라 헨리 스토커(SANDRA HENRY-STOCKER)
“이 책으로 자바스크립트 여정을 시작하면 다양한 기술에 대한 정보와 프로그래밍의 지혜를 빠르게 배울 수 있다.”
— 마이클 J. 로스(MICHAEL J. ROSS), 웹 개발자 겸 슬래시닷(SLASHDOT) 기고자
“나는 이 책 덕분에 더 나은 아키텍트, 작가, 멘토, 개발자가 됐다. 플래너건(Flannagan)과 크록포드(Crockford)의 책과 함께 책장에 두어도 좋다.”
— 앵거스 크롤(ANGUS CROLL), 트위터 개발자
“모든 프로그래밍 언어와 프로그래밍 전반에 대한 최고의 글이다. 끝!”
— 얀 레나르트(JAN LEHNARDT), 후디(HOODIE)의 공동 창업자 겸 JSCONF EU 주최자
“사람들이 자바스크립트를 배우는 방법을 물을 때 일러주는 책이다.”
— 크리스 윌리엄스(CHRIS WILLIAMS), JSCONF US 주최자
“내가 읽은 최고의 자바스크립트 책 중 하나다.”
— 레이 뱅고(REY BANGO), 제이쿼리(JQUERY)팀 멤버, 마이크로소프트 클라이언트 웹 커뮤니티 프로그램 매니저
“자바스크립트 가이드로도 정말 좋지만 그 이상으로 훌륭한 프로그래밍 가이드다.”
— 벤 나델(BEN NADEL), EPICENTER CONSULTING의 최고 소프트웨어 엔지니어
“자바스크립트 경험이 없는 사람들뿐만 아니라 프로그래밍 경험이 없는 사람들에게도 적합한 좋은 책이다.”
— 니콜라스 자카스(NICHOLAS ZAKAS), 『JavaScript』와 『객체지향 자바스크립트의 원리』의 저자
“자바스크립트가 처음이라면 가장 먼저 Eloquent JavaScript 사이트에서 머라인 하버비케가 쓴 소개 글을 읽어 보기 바란다.”
— CNET UK
이 책에서 다루는 내용
■ 문법과 제어 흐름, 자료 구조를 포함한 프로그래밍의 필수 요소 이해
■ 객체 지향과 함수형 프로그래밍을 통해 코드를 작성하고 명확하게 만드는 방법
■ 기본 웹 애플리케이션과 브라우저 스크립트를 만드는 방법
■ DOM을 사용해 브라우저와 효율적으로 상호 작용하는 방법
■ Node.js를 활용해 서버와 도구를 만드는 방법
이 책의 구성
이 책은 세 부분으로 구성된다. 처음 1, 2장에서는 자바스크립트 언어를 설명한다. 그 이후 일곱 개의 장에 걸쳐 웹 브라우저와 자바스크립트를 사용해 프로그래밍하는 방법을 설명한다. 마지막 두 장에서는 자바스크립트 프로그래밍을 할 수 있는 또 다른 환경인 Node.js를 다룬다.
책 전반에 걸쳐 5개의 프로젝트 장이 있으며, 실제로 프로그래밍을 경험해 볼 수 있도록 비교적 큰 예제 프로그램을 설명한다. 배달 로봇, 프로그래밍 언어, 플랫폼 게임, 픽셀 페인트 프로그램, 다이나믹 웹 사이트 순서로 진행한다.
이 책에서 언어 부분은 자바스크립트 언어의 기본 구조를 소개하는 4개의 장으로 구성된다. 소개글에서 봤던 while문과 같은 제어 구조와 사용자 고유의 빌딩 블록을 작성할 수 있는 함수 그리고 자료 구조를 소개한다. 그 다음에 기본적인 프로그램을 작성할 수 있게 된다. 다음으로 5장과 6장에서는 함수와 객체를 사용해 추상적인 코드를 작성하고 복잡성을 제어하는 방법을 소개한다.
첫 번째 프로젝트 다음에 나오는 언어 부분에서는 오류 처리와 버그 수정, 정규식(텍스트를 처리하는 중요한 도구), 모듈성(복잡성에 대한 또 다른 대응책), 비동기 프로그래밍(시간이 걸리는 이벤트 처리)에 관해 설명하는 장이 계속된다. 이어서 두 번째 프로젝트로 책의 1부를 마친다.
2부는 13장에서 19장으로 구성되며 브라우저 자바스크립트에서 접근할 수 있는 도구를 설명한다. 화면에 사물을 표시하고(14장, 17장) 사용자 입력에 응답하고(15장) 네트워크로 통신하는 방법(18장)을 배운다. 그리고 두 개의 프로젝트를 진행한다.
이후 20장에서는 Node.js를 설명하고 21장에서는 해당 도구를 사용해 소규모 웹 사이트를 만든다.
끝으로 22장에서는 속도를 개선하기 위해 자바스크립트 프로그램을 최적화할 때 고려해야 할 내용을 설명한다.
목차
목차
- 1장. 값, 타입, 연산자
- 값
- 숫자
- 문자열
- 단항 연산자
- 불리언 값
- 빈 값
- 자동 형 변환
- 요약
- 2장. 프로그램 구조
- 표현식과 구문
- 바인딩
- 바인딩 이름
- 환경
- 함수
- console.log 함수
- 반환 값
- 제어 흐름
- 조건부 실행
- while과 do 반복문
- 코드 들여쓰기
- for 반복문
- 반복문 나가기
- 간결한 바인딩 업데이트
- switch를 통한 값 분기
- 대문자 사용
- 주석
- 요약
- 3장. 함수
- 함수 정의
- 바인딩과 범위
- 함수 값
- 선언 표기법
- 화살표 함수
- 호출 스택
- 선택적 인수
- 클로저
- 재귀 함수
- 함수의 발전
- 함수와 부수 효과
- 요약
- 연습 문제
- 4장. 객체와 배열 자료 구조
- 다람쥐 전설
- 데이터 세트
- 속성
- 메서드
- 객체
- 변형
- 변신 로그
- 상관관계 계산
- 배열 반복문
- 최종 분석
- 배열 더 보기
- 문자열과 문자열 속성
- 나머지 매개변수
- Math 객체
- 구조 분해
- JSON
- 요약
- 연습 문제
- 5장. 고차 함수
- 추상화
- 반복 추상화
- 고차 함수
- 문자 데이터 세트
- 배열 필터링
- 맵으로 변환
- 리듀스로 요약
- 결합성
- 문자열과 문자 코드
- 텍스트 인식
- 요약
- 연습 문제
- 6장. 객체의 이중 생활
- 캡슐화
- 메서드
- 프로토타입
- 클래스
- 클래스 표기법
- 파생 속성 재정의
- 맵
- 다형성
- 심볼
- 반복자 인터페이스
- 게터, 세터, 스태틱
- 상속
- instanceof 연산자
- 요약
- 연습 문제
- 7장. 로봇 프로젝트
- 메도우필드
- 할 일
- 영구 데이터
- 시뮬레이션
- 메일 트럭의 경로
- 길 찾기
- 연습 문제
- 8장. 버그와 오류
- 언어
- 엄격한 모드
- 유형
- 테스팅
- 디버깅
- 오류 전파
- 예외 처리
- 예외 처리 후 정리
- 선택적 예외 처리
- 어설션
- 요약
- 연습 문제
- 9장. 정규 표현식
- 정규 표현식 만들기
- 일치 테스트
- 문자 세트
- 패턴의 부분 반복
- 하위 표현식 그룹화
- 매칭과 그룹
- 날짜 클래스
- 단어와 문자열 경계 지정
- 선택 패턴
- 매칭의 동작 방식
- 역추적
- replace 메서드
- 탐욕적인 연산자
- 동적 RegExp 객체 생성
- search 메서드
- lastIndex 속성
- INI 파일 파싱
- 국제 문자
- 요약
- 연습 문제
- 10장. 모듈
- 모듈
- 패키지
- 임시 모듈
- 데이터를 코드로 평가하기
- CommonJS
- ECMAScript 모듈
- 빌드와 번들링
- 모듈 설계
- 요약
- 연습 문제
- 11장. 비동기 프로그래밍
- 비동기성
- 까마귀의 기술
- 콜백
- 프로미스
- 실패
- 네트워크는 어렵다
- 프로미스 모음
- 네트워크 플러딩
- 메시지 라우팅
- 비동기 함수
- 제너레이터
- 이벤트 루프
- 비동기 버그
- 요약
- 연습 문제
- 12장. 프로그래밍 언어 프로젝트
- 파싱
- 실행기
- 특별한 형식
- 환경
- 함수
- 컴파일
- 편법
- 연습 문제
- 2부. 브라우저
- 13장. 자바스크립트와 브라우저
- 네트워크와 인터넷
- 웹
- HTML
- HTML과 자바스크립트
- 샌드박스
- 호환성과 브라우저 전쟁
- 14장. DOM
- 문서 구조
- 트리
- 표준
- 트리 이동하기
- 요소 찾기
- 문서 변경하기
- 노드 생성하기
- 속성
- 레이아웃
- 스타일링
- CSS
- 쿼리 선택자
- 위치 지정과 애니메이션
- 요약
- 연습 문제
- 15장. 이벤트 처리
- 이벤트 핸들러
- 이벤트와 DOM 노드
- 이벤트 객체
- 전파
- 기본 동작
- 키 이벤트
- 포인터 이벤트
- 스크롤 이벤트
- 포커스 이벤트
- 로드 이벤트
- 이벤트와 이벤트 루프
- 타이머
- 디바운스
- 요약
- 연습 문제
- 16장. 플랫폼 게임 프로젝트
- 게임
- 기술
- 레벨
- 레벨 읽기
- 액터
- 캡슐화의 부담
- 드로잉
- 움직임과 충돌
- 액터 업데이트
- 키 추적
- 게임 실행
- 연습 문제
- 17장. 캔버스에 그리기
- SVG
- 캔버스 요소
- 선과표면
- 경로
- 곡선
- 파이 차트 그리기
- 텍스트
- 이미지
- 변환
- 변환저장 및 삭제
- 플랫폼 게임에 적용하기
- 그래픽인터페이스 선택하기
- 요약
- 연습 문제
- 18장. HTTP와 폼
- 프로토콜
- 브라우저와 HTTP
- 패치
- HTTP 샌드박싱
- 탁월한 HTTP
- 보안과 HTTPS
- 폼 필드
- 포커스
- 필드 비활성화
- 전체 폼
- 텍스트 필드
- 체크박스와 라디오 버튼
- 셀렉트 필드
- 파일 필드
- 클라이언트 측에 데이터 저장
- 요약
- 연습 문제
- 19장. 픽셀 이미지 편집기 프로젝트
- 구성 요소
- 상태
- DOM 생성
- 캔버스
- 애플리케이션
- 드로잉 도구
- 저장과 불러오기
- 작업 실행 취소
- 드로잉
- 왜 이렇게 어려운가?
- 연습 문제
- 3부. Node
- 20장. NODE.JS
- 배경
- 노드 명령어
- 모듈
- NPM으로 설치
- 파일 시스템 모듈
- HTTP 모듈
- 스트림
- 파일 서버
- 요약
- 연습 문제
- 21장. 기술 공유 웹 사이트 프로젝트
- 설계
- 롱 폴링
- HTTP 인터페이스
- 서버
- 클라이언트
- 연습 문제
- 22장. 자바스크립트와 성능
- 단계적 컴파일
- 그래프 레이아웃
- 그래프 정의하기
- 힘 지향 레이아웃
- 작업 줄이기
- 프로파일링
- 함수 인라인
- 가비지 줄이기
- 가비지 콜렉션
- 동적 유형
- 요약
- 연습 문제
- 연습 문제 힌트
- 2장 프로그램 구조
- 3장 함수
- 4장 객체와 배열의 자료 구조
- 5장 고차 함수
- 6장 객체의 이중 생활
- 7장 로봇 프로젝트
- 8장 버그와 오류
- 9장 정규 표현식
- 10장 모듈
- 11장 비동기 프로그래밍
- 12장 프로그래밍 언어 프로젝트
- 14장 DOM
- 15장 이벤트 처리
- 16장 플랫폼 게임 프로젝트
- 17장 캔버스에 그리기
- 18장 HTTP와 폼
- 19장 픽셀 이미지 에디터 프로젝트
- 20장 Node.js
- 21장 기술 공유 웹 사이트 프로젝트
- 22장 자바스크립트와 성능
도서 오류 신고
정오표
정오표
[p.141 : 7행]
하지만 계산에 사용된 코드의 가독성이 떨어진다는 것에 동의할 것이다.
->
하지만 계산에 사용된 코드의 가독성이 나쁘지 않다는 것에는 동의할 것이다.