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