Top

자바스크립트 스킬업 3/e [효율적인 코딩을 통한 자바스크립트 중급 입문서]

  • 원서명Eloquent Javascript, 3rd edition: A Modern Introduction to Programming (ISBN 9781593279509)
  • 지은이마레인 하버비케(Marijn Haverbeke)
  • 옮긴이양정열
  • ISBN : 9791161755021
  • 33,000원
  • 2021년 03월 31일 펴냄
  • 페이퍼백 | 568쪽 | 188*235mm
  • 시리즈 : 웹 프로페셔널

책 소개

요약

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장에서는 속도를 개선하기 위해 자바스크립트 프로그램을 최적화할 때 고려해야 할 내용을 설명한다.

저자/역자 소개

지은이의 말

이 책은 컴퓨터 명령에 관한 내용을 다룬다. 오늘날 컴퓨터는 스크류 드라이버만큼 흔하지만 훨씬 더 복잡하며, 컴퓨터가 우리가 원하는 작업을 처리하도록 만드는 일이 쉽지만은 않다.
컴퓨터에서 이메일을 보여 주거나 계산하는 것처럼 일반적이고 이해가 쉬운 작업을 하는 경우, 적당한 애플리케이션을 열고 작업을 시작하면 된다. 하지만 고유한 작업이나 확장이 가능한 작업의 경우는 해당되는 애플리케이션이 존재하지 않을 것이다.
여기서 바로 프로그래밍이 개입하게 된다. 프로그래밍은 프로그램을 만드는 행위로 컴퓨터가 무엇을 해야 하는지 알려주는 구체적인 명령어 집합이다. 컴퓨터는 지나치게 바보같이 규칙을 따르는 물건이기 때문에 프로그래밍은 본질적으로 지루하고 답답하다.
다행히 이러한 사실을 극복할 수 있고, 바보 같은 기계가 처리할 수 있는 용어를 사용해 엄격하게 사고하는 것을 즐길 수 있다면 프로그래밍에 보람을 느낄 수 있다. 직접 하면 오래 걸리는 작업을 프로그래밍으로 몇 초 만에 할 수 있다. 프로그래밍은 컴퓨터에서 이전에는 처리할 수 없었던 작업을 처리하도록 만드는 방법이다. 그리고 추상적인 사고를 할 수 있는 좋은 훈련이 된다.
대부분의 프로그래밍은 프로그래밍 언어를 사용한다. 프로그래밍 언어는 컴퓨터에게 명령하기 위해 인위적으로 만든 언어다. 컴퓨터와 가장 효율적으로 의사 소통하는 방법이 인간의 의사 소통 방법에서 많은 부분을 차용한 것은 흥미로운 부분이다. 인간의 언어와 마찬가지로 컴퓨터 언어도 단어와 구문을 새로운 방식으로 결합해 새로운 개념을 표현할 수 있다.
1980년대와 1990년대에는 BASIC과 DOS 프롬프트와 같은 언어 기반 인터페이스가 컴퓨터와 상호 작용하는 주요 방법이었던 적도 있었다. 이후로 대부분은 시각적인 인터페이스로 대체됐고 배우기 쉬워졌지만 자유도는 줄어들었다. 하지만 컴퓨터 언어가 사용되는 곳을 알고 있다면 여전히 그 자리를 지키고 있는 언어를 확인할 수 있다. 이러한 언어 중 하나인 자바스크립트는 모든 최신 웹 브라우저에 내장돼 있으며 거의 모든 장치에서 사용할 수 있다.
이 책에서는 이 언어와 친해져 재미 있고 쓸모 있는 작업을 할 수 있도록 도와줄 것이다

자바스크립트를 설명하는 내용과 더불어 프로그래밍의 기본 원리를 소개한다. 프로그래밍은 어렵다. 기본적인 규칙은 간단하고 명확하지만 이러한 규칙 위에 만들어진 프로그램은 스스로 만든 규칙과 복잡함을 설명해야 할 만큼 복잡해지기도 한다. 특정 방식으로 자신만의 미로를 만들고 그 안에서 길을 잃을 수도 있다.
이 책을 읽다가 몹시 좌절감이 들 수 있다. 프로그래밍이 처음이라면 소화해야 할 새로운 내용이 많을 것이다. 대부분의 내용은 추가 연결이 필요한 방식으로 구성돼 있다.
필요한 노력을 하는 것은 자신에게 달려 있다. 책을 따라 하기 위해 고군분투 할 때 자신의 능력을 성급하게 평가하지 않기를 바란다. 잘하고 있고, 멈추지 않고 계속해서 하면 된다. 잠시 휴식을 취한 다음 내용을 다시 읽고, 예제 프로그램과 연습 문제를 이해했는지 확인한다. 배움은 힘든 일이지만 배우는 모든 것은 자신의 것이며 이후에 배울 내용을 더 수월하게 익힐 수 있다.

지은이 소개

머레인 하버비케(Marijn Haverbeke)

프로그래밍 언어의 열렬한 지지자이며 다양한 언어를 좋아한다. 데이터베이스에서 컴파일러, 편집자에 이르기까지 다양한 소프트웨어 분야에서 일했다. 자신의 오픈 소스 프로젝트를 중심으로 하는 소규모 비즈니스를 운영하고 있다.

옮긴이의 말

자바스크립트는 더 이상 자세한 설명이 필요 없는 중요한 언어로 자리매김했다. 클라이언트와 서버에서 사용되며, 수많은 대규모 프로젝트에서 채택해 사용하고 있다. 또한 여러 가지 프레임워크와 라이브러리가 커뮤니티를 통해 계속해서 만들어지고 지속적으로 발전하고 있다.
이러한 자바스크립트의 수요에 따라 이 언어를 배우고 활용하기 위한 개발자를 위한 기초 문법과 라이브러리, 프레임워크를 소개하는 좋은 안내서가 시중에 많이 나와 있다. 이 책은 그러한 기본서와 활용서 사이에 부족한 부분을 보완할 수 있는 좋은 책이다. 참고로, 잘 알려진 모질라 개발자 네트워크MDN 사이트에도 중급 개발자용 도서로 소개돼 있다.
간단한 예제부터 적당한 규모의 프로젝트까지 다양한 예제를 통해 자연스럽게 자바스크립트 고급 기술을 습득할 수 있도록 구성돼 있다. 웹 사이트로 공개 출판된 버전에서는 샌드박스를 제공하며, 이를 통해 별도의 개발 환경이나 에디터가 없어도 PC나 모바일 브라우저에서 예제 코드를 실행하고 결과를 확인할 수 있다. 책으로 출판된 버전에는 웹에서 공개되지 않은 자바스크립트 성능 개선을 위한 챕터가 포함돼 더 많은 내용을 확인할 수 있다.
자, 그럼 즐거운 배움의 시간이 되길 바란다.

옮긴이 소개

양정열

국내 Telco SI/SM Software개발자로 시작해 현재는 프로젝트 매니저로 일하고 있으며, 번역/저술 공동체 GoDev 멤버다.

목차

목차
  • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.141 : 7행]
하지만 계산에 사용된 코드의 가독성이 떨어진다는 것에 동의할 것이다.
->
하지만 계산에 사용된 코드의 가독성이 나쁘지 않다는 것에는 동의할 것이다.