BOOKSEEK BOOK NOTES
코어 자바스크립트
같은 함수를 호출했는데 this가 예상과 다르거나, 객체를 복사했는데 원본까지 바뀌었다면 문법을 다시 외우는 것만으로는 답답함이 풀리지 않습니다. 『코어 자바스크립트』는 이런 문제에서 언어의 동작 원리를 돌아보도록 구성한 책입니다. 데이터 타입과 실행 컨텍스트, this, 콜백, 클로저, 프로토타입과 클래스를 중심으로 범위를 좁힙니다. 처음 프로그램을 만드는 안내보다 이미 만난 코드의 이유를 설명하고 싶은 독자에게 가깝습니다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
책의 기본 정보
- 출판사
- 위키북스
- 출간일
- 2019-09-10
- 분량
- 212쪽
- ISBN
- 9791158391720
이 책에서 공부할 수 있는 내용
이 책에서는 데이터와 참조의 구분, 함수의 실행과 참조 범위, 함수와 객체의 관계을 다룹니다. 관심 있는 항목을 아래 설명과 함께 살펴보세요.
데이터와 참조의 구분
- 기본형·참조형, 복사와 불변성을 예제의 데이터 연결 관계로 살펴봅니다.
함수의 실행과 참조 범위
- 실행 컨텍스트·스코프·this를 함수의 호출 상황에 연결해 읽습니다.
함수와 객체의 관계
- 콜백·클로저·프로토타입·상속이 코드에서 맡는 역할을 비교합니다.
관련 주제의 학습 사항: 자바스크립트 입문 책 추천
어떤 내용을 다루나요?
같은 함수를 호출했는데 this가 예상과 다르거나, 객체를 복사했는데 원본까지 바뀌었다면 문법을 다시 외우는 것만으로는 답답함이 풀리지 않습니다. 『코어 자바스크립트』는 이런 문제에서 언어의 동작 원리를 돌아보도록 구성한 책입니다. 데이터 타입과 실행 컨텍스트, this, 콜백, 클로저, 프로토타입과 클래스를 중심으로 범위를 좁힙니다. 처음 프로그램을 만드는 안내보다 이미 만난 코드의 이유를 설명하고 싶은 독자에게 가깝습니다.
데이터를 다루는 부분에서는 기본형과 참조형, 값의 복사와 객체의 불변성을 살펴봅니다. 변수 이름이 두 개라는 사실과 데이터가 어떻게 연결되어 있다는 사실을 구별하게 하는 내용입니다. 자신의 코드에서 복사한 값이 기대와 다르게 변했다면 해당 설명과 예제를 대조해볼 수 있습니다. 작은 예제를 읽을 때에도 무엇이 새로 만들어지고 무엇이 공유되는지 표시해보는 방식이 어울립니다.
실행 컨텍스트와 스코프를 다루는 부분은 코드가 작성된 순서와 실행 중에 참조할 수 있는 범위를 나누어 보는 자리입니다. 호이스팅 같은 단어를 뜻풀이로만 기억하면 실제 코드 앞에서 다시 혼란스러워질 수 있습니다. 함수가 불리는 위치와 변수를 찾는 과정을 함께 보면서 자신의 예상 결과를 먼저 적어보세요. 결과가 달랐을 때 어느 가정부터 다시 살펴볼지 질문을 만드는 데 이 책을 사용할 수 있습니다.
this는 상황에 따른 바인딩과 명시적인 지정 방법을 구분해 설명합니다. 객체 안에 적힌 함수인지뿐 아니라 어떻게 호출하는지를 함께 보아야 한다는 문제를 다룹니다. 하나의 규칙을 모든 경우에 적용하려 하기보다 함수 호출과 메서드 호출, 콜백이나 생성자 사용을 나누어 비교하는 독서가 맞습니다. 이런 구분은 외운 정의를 코드의 구체적인 자리로 옮기는 연습이 됩니다.
콜백과 클로저를 읽는 과정에서는 함수가 값을 받는다는 사실에서 그 함수가 언제 불리고 어떤 값을 기억하는지로 관심을 넓힐 수 있습니다. 책에는 클로저의 활용과 메모리 관리, 정보 은닉 등에 관한 항목도 있습니다. 익숙한 용어라도 한 줄의 정의로 끝내지 않고 어떤 문제를 설명하는 데 쓰이는지 확인해보는 편이 좋습니다. 작은 함수를 바꾸어 실행해보며 결과의 차이를 비교하는 방식도 생각할 수 있습니다.
프로토타입과 클래스는 객체 사이의 관계를 이해하는 설명으로 이어집니다. 최신 프레임워크의 사용법을 폭넓게 소개하는 책은 아니므로 새로운 도구의 설치 방법을 찾는 독서와는 목적이 다릅니다. 객체와 메서드를 이미 사용하면서도 상속 관계나 속성을 찾는 이유를 설명하기 어려웠던 독자라면 필요한 부분부터 살펴볼 수 있습니다. 짧은 분량이라는 이유로 모든 내용을 빠르게 읽어야 한다고 생각할 필요도 없습니다.
2019년 판본을 남기는 이유는 당시 도구의 화면을 따라 하기 위해서가 아니라 특정 핵심 개념을 모아 검토하는 범위가 분명하기 때문입니다. 다만 책의 모델을 최신 엔진 내부 구현의 완전한 설명으로 확대해서 읽지는 않아야 합니다. 문법의 출발점부터 배워야 한다면 제작형 입문서를 먼저 고르고, 자신의 코드에 설명이 필요한 지점이 생겼다면 이 책의 해당 항목을 펼치는 편이 선택의 목적에 맞습니다.
특징
언어 전체의 문법 목록 대신 실행 원리의 핵심 주제를 모았습니다. 특정 개념에서 자꾸 생기는 혼란을 집중해서 정리하려는 독자에게 어울립니다.
데이터 복사와 불변성, 함수 호출과 this처럼 함께 헷갈리기 쉬운 관계를 다룹니다. 결과를 먼저 예상하고 설명과 대조하는 연습에 사용할 수 있습니다.
콜백과 클로저의 원리뿐 아니라 활용 사례도 포함합니다. 용어의 뜻에서 실제 코드가 해결하려는 문제로 생각을 옮겨볼 수 있습니다.
2019년 출간된 원리 중심 책입니다. 최신 도구나 모든 엔진 구현의 설명을 찾는 목적보다 자바스크립트 기초 개념을 다시 점검하는 목적에 맞습니다.
목차
01장: 데이터 타입1-1 데이터 타입의 종류 1-2 데이터 타입에 관한 배경지식 __1-2-1 메모리와 데이터 __1-2-2 식별자와 변수 1-3 변수 선언과 데이터 할당 __1-3-1 변수 선언 __1-3-2 데이터 할당 1-4 기본형 데이터와 참조형 데이터 __1-4-1 불변값 __1-4-2 가변값 __1-4-3 변수 복사 비교 1-5 불변 객체immutable object __1-5-1 불변 객체를 만드는 간단한 방법 __1-5-2 얕은 복사와 깊은 복사 1-6 undefined와 null 1-7 정리 02장: 실행 컨텍스트2-1 실행 컨텍스트란? 2-2 VariableEnvironment 2-3 LexicalEnvironment __2-3-1 environmentRecord와 호이스팅hoisting __2-3-2 스코프, 스코프 체인, outerEnvironmentReference 2-4 this 2-5 정리 03장: this3-1 상황에 따라 달라지는 this __3-1-1 전역 공간에서의 this __3-1-2 메서드로서 호출할 때 그 메서드 내부에서의 this __3-1-3 함수로서 호출할 때 그 함수 내부에서의 this __3-1-4 콜백 함수 호출 시 그 함수 내부에서의 this __3-1-5 생성자 함수 내부에서의 this 3-2 명시적으로 this를 바인딩하는 방법 __3-2-1 call 메서드 __3-2-2 apply 메서드 __3-2-3 call / apply 메서드의 활용 __3-2-4 bind 메서드 __3-2-5 화살표 함수의 예외사항 __3-2-6 별도의 인자로 this를 받는 경우(콜백 함수 내에서의 this) 3-3 정리 04장: 콜백 함수4-1 콜백 함수란? 4-2 제어권 __4-2-1 호출 시점 __4-2-2 인자 __4-2-3 this 4-3 콜백 함수는 함수다 4-4 콜백 함수 내부의 this에 다른 값 바인딩하기 4-5 콜백 지옥과 비동기 제어 4-6 정리 05장: 클로저5-1 클로저의 의미 및 원리 이해 5-2 클로저와 메모리 관리 5-3 클로저 활용 사례 __5-3-1 콜백 함수 내부에서 외부 데이터를 사용하고자 할 때 __5-3-2 접근 권한 제어(정보 은닉) __5-3-3 부분 적용 함수 __5-3-4 커링 함수 5-4 정리 06장: 프로토타입6-1 프로토타입의 개념 이해 __6-1-1 constructor, prototype, instance __6-1-2 constructor 프로퍼티 6-2 프로토타입 체인 __6-2-1 메서드 오버라이드 __6-2-2 프로토타입 체인 __6-2-3 객체 전용 메서드의 예외사항 __6-2-4 다중 프로토타입 체인 6-3 정리 07장: 클래스7-1 클래스와 인스턴스의 개념 이해 7-2 자바스크립트의 클래스 7-3 클래스 상속 __7-3-1 기본 구현 __7-3-2 클래스가 구체적인 데이터를 지니지 않게 하는 방법 __7-3-3 constructor 복구하기 __7-3-4 상위 클래스에의 접근 수단 제공 7-4 ES6의 클래스 및 클래스 상속 7-5 정리 7-6 마치며
작가 소개
정재남은 자바스크립트와 jQuery, React 등을 주제로 강의하고 웹 프런트엔드 개발 경험을 책으로 정리한 저자입니다. 현재 소속을 단정하기보다 이 책에 반영된 언어 원리 설명과 교육 경험을 중심으로 소개합니다.