쪽수
ISBN
브랜드
모호하고 애매한 여덟 가지 자바스크립트 개념 길라잡이 : You Don’t Know JS 시리즈
웹 초창기 시절부터 자바스크립트는 사람들이 대화하듯 웹 콘텐츠를 소비할 수 있게 해준 기반 기술이었다. 20년 가까이 흐른 지금은 엄청난 규모로 기술적 역량이 성장하였고, 세계에서 가장 널리 사용되는 소프트웨어 플랫폼이라 불리는 웹의 심장부를 형성하는 핵심 기술이 되었다.
자바스크립트는 처음 시작하고 실행하기가 가장 쉬운 언어지만, 다른 언어보다 완전히 숙달한 사람은 훨씬 적다. C/C++ 등으로 완전한 프로그램을 짜려면 언어 자체를 깊이 있게 알고 있어야 하지만, 자바스크립트는 언어 전체의 능력 중 일부를 수박 겉핥기 정도만 알고 사용해도 웬만큼 서비스가 가능한 프로그램을 만들어낼 수 있다.
바로 이 부분이 자바스크립트의 모순이자 아킬레스건이고, 이 책에서 다루는 주제이기도 하다. ‘You Don’t Know JS’ 시리즈는 자바스크립트의 모든 것, 그중 특히 착각하기 쉽고 이해하기 어려운 부분을 깊고 철저하게 파고든다.
『You Don’t Know JS』 시리즈 도서
대상 독자
다 안다고 여겼던 자바스크립트, 정작 난 정확히 모르고 있었다.
자바스크립트는 웹의 태동과 괘를 같이 한 웹 프로그래밍 언어다. 웹의 심장부를 형성하는 대표 웹 프로그래밍 언어의 지위에 오른 자바스크립트는 사물인터넷(IoT), 증강현실(VR), 모바일 앱으로까지 영역을 확대하며 쓰임이 넓어지고 있다. 이처럼 자바스크립트 개발자가 웹 너머의 분야에서도 활약할 기회의 문이 열렸지만 자바스크립트에 완전히 숙달한 사람은 극히 드문 상황이다. C/C++ 등으로 완전한 프로그램을 짜려면 언어 자체를 깊이 있게 알고 있어야 하지만, 자바스크립트는 언어 전체의 능력 중 일부를 수박 겉핥기 정도만 알고 사용해도 웬만큼 서비스가 가능한 프로그램을 만들어낼 수 있기 때문이다.
바로 이것이 자바스크립트의 ‘모순’이자 ‘아킬레스건’이고, 이 책에서 다루는 주제다. 『You Don’t Know JS』 시리즈는 자바스크립트 중 특히 착각하기 쉽고 이해하기 어려운 부분을 깊고 철저하게 파고든다. 저자는 “그냥 이 정도면 됐지” 식으로 대충 이해하고 때우는 자세를 끊임없이 거론한다. 험한 길을 마주한 상황에서 쉬운 길로 돌아가라고 조언하지도 않는다. 자바스크립트에 대해 흔히 오해하고 있거나 잘못 이해하고 있는 여덟 가지 핵심 언어 요소를 완벽히 이해할 때까지 다양한 예제를 들어 깊고 철저하게 파헤쳐간다.
PART I 타입과 문법
1장 타입
_1.1 타입, 그 실체를 이해하자
_1.2 내장 타입
_1.3 값은 타입을 가진다
__1.3.1 값이 없는 vs 선언되지 않은
__1.3.2 선언되지 않은 변수
_1.4 정리하기
2장 값
_2.1 배열
__2.1.1 유사 배열
_2.2 문자열
_2.3 숫자
__2.3.1 숫자 구문
__2.3.2 작은 소수 값
__2.3.3 안전한 정수 범위
__2.3.4 정수인지 확인
__2.3.5 32비트 (부호 있는) 정수
_2.4 특수 값
__2.4.1 값 아닌 값
__2.4.2 Undefined
__2.4.3 특수 숫자
__2.4.4 특이한 동등 비교
_2.5 값 vs 레퍼런스
_2.6 정리하기
3장 네이티브
_3.1 내부 [[Class]]
_3.2 래퍼 박싱하기
__3.2.1 객체 래퍼의 함정
_3.3 언박싱
_3.4 네이티브, 나는 생성자다
__3.4.1 Array( )
__3.4.2 Object( ), Function( ), and RegExp( )
__3.4.3 Date( ) and Error( )
__3.4.4 Symbol( )
__3.4.5 네이티브 프로토타입
_3.5 정리하기
4장 강제변환
_4.1 값 변환
_4.2 추상 연산
__4.2.1 ToString
__4.2.2 ToNumber
__4.2.3 ToBoolean
_4.3 명시적 강제변환
__4.3.1 명시적 강제변환: 문자열 ↔ 숫자
__4.3.2 명시적 강제변환: 숫자 형태의 문자열 파싱
__4.3.3 명시적 강제변환: * → 불리언
_4.4 암시적 변환
__4.4.1 ‘암시적’이란?
__4.4.2 암시적 강제변환: 문자열 ↔ 숫자
__4.4.3 암시적 강제변환: 불리언 → 숫자
__4.4.4 암시적 강제변환: * → 불리언
__4.4.5 &&와 || 연산자
__4.4.6 심벌의 강제변환
_4.5 느슨한/엄격한 동등 비교
__4.5.1 비교 성능
__4.5.2 추상 동등 비교
__4.5.3 희귀 사례
_4.6 추상 관계 비교
_4.7 정리하기
5장 문법
_5.1 문과 표현식
__5.1.1 문의 완료 값
__5.1.2 표현식의 부수 효과
__5.1.3 콘텍스트 규칙
_5.2 연산자 우선순위
__5.2.1 단락 평가
__5.2.2 끈끈한 우정
__5.2.3 결합성
__5.2.4 분명히 하자
_5.3 세미콜론 자동 삽입
__5.3.1 에러 정정
_5.4 에러
__5.4.1 너무 이른 변수 사용
__5.5 함수 인자
_5.6 try…finally
_5.7 switch
_5.8 정리하기
PART I I 스코프와 클로저
1장 스코프란 무엇인가
_1.1 컴파일러 이론
_1.2 스코프 이해하기
__1.2.1 출연진
__1.2.2 앞과 뒤
__1.2.3 컴파일러체
__1.2.4 엔진과 스코프의 대화
__1.2.5 퀴즈
_1.3 중첩 스코프
__1.3.1 비유로 배워보기
_1.4 오류
_1.5 정리하기
__1.5.1 퀴즈 답안
2장 렉시컬 스코프
_2.1 렉스타임
_2.1.1 검색
_2.2 렉시컬 속이기
__2.2.1 eval
__2.2.2 with
__2.2.3 성능
_2.3 정리하기
3장 함수 vs 블록 스코프
_3.1 함수 기반 스코프
_3.2 일반 스코프에 숨기
__3.2.1 충돌 회피
_3.3 스코프 역할을 하는 함수
__3.3.1 익명 vs 기명
__3.3.2 함수 표현식 즉시 호출하기
_3.4 스코프 역할을 하는 블록
__3.4.1 with
__3.4.2 try/catch
__3.4.3 let
__3.4.4 const
_3.4 정리하기
4장 호이스팅
_4.1 닭이 먼저냐 달걀이 먼저냐
_4.2 컴파일러는 두 번 공격한다
_4.3 함수가 먼저다
_4.4 정리하기
5장 스코프 클로저
_5.1 깨달음
_5.2 핵심
_5.3 이제 나는 볼 수 있다
_5.4 반복문과 클로저
__5.4.1 다시 보는 블록 스코프
_5.5 모듈
__5.5.1 현재의 모듈
__5.5.2 미래의 모듈
_5.6 정리하기
부록 A 다양한 환경의 자바스크립트
부록 A.1 ECMAScript
_부록 A.2 호스트 객체
_부록 A.3 전역 DOM 변수
_부록 A.4 네이티브 프로토타입
_부록 A.5 <script>들
_부록 A.6 예약어
_부록 A.7 구현 한계
부록 B 스코프와 렉시컬 this
_부록 B.1 동적 스코프
_부록 B.2 폴리필링 블록 스코프
_부록 B.3 렉시컬 this
전체 평점
4.7
오탈자를 발견하셨다면 작성해주세요.
24,000원
10%
21,600원