goldw***
2024-02-26

당신은 아직 자바스크립트를 모른다! 더욱 깊이, 제대로 이해하는 자바스크립트 핵심 개념
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
<서론>
개인적으로 웹 프런트 개발을 공부하고 싶어서 리액트를 공부하던 중 자바스크립트에 대한 이해도가 많이 떨어진다는 생각에 관련 도서를 찾던 중 "당신은 아직 자바스크립트를 모른다"는 자극적인 제목을 가진 이 책이 한빛 미디어의 리뷰 이벤트 목록에서 눈에 띄었다.
이 책의 겉표지에 적혀 있는 것처럼 모호하고 애매한 자바스크립트의 개념에 대해 좀 더 깊이 있는 이해를 할 수 있다면 이 언어를 잘 사용할 수 있지 않을까 하는 희망을 품고 이 책을 읽기 시작하였다.
<대상 독자>
자바스크립트를 한 번도 다루어보지 않은 개발자라면 먼저 기본적인 문법은 먼저 학습하기를 추천한다. 저자도 “이 책에 대하여” 장에서 언급했듯이 이 책은 단순 문법에 대한 설명이 아닌 언어의 작동 원리를 중심으로 언어의 핵심 개념을 배울 수 있게 되어 있다. 그래서 평상시 자바스크립트를 사용하면서 가졌던 의문들이 있다면 좀 더 능동적으로 읽을 수 있고 그 만큼 학습 효과도 높일 수 있다고 생각된다.

<내용>
이 책은 크게 2부분으로 구성되어 있으며 일부 중요한 내용을 정리하면 다음과 같다.
* 자바스크립트라는 이름은 자바와는 관계가 없으며 마케팅 목적으로 고안된 이름이다. 표준 기구의 공식 명칭은 ECMAScript 이다.
* JS는 다중 패러다임 언어다. (절차적, 객체 지향, 함수형)
* JS의 중요 기본 원칙: 하위 호환성 (과거에 작성한 코드가 시간이 흘러도 정상적으로 동작함을 보장한다.)
* polyfill: 새로운 API의 추가로 인해 상위 호환성 문제가 발생할 경우 이를 추가하여 과거에도 존재했던 것처럼 만들어 정상 동작시키는 방법 (shim이라고도 불림)
* JS는 인터프리터 언어보다 컴파일 언어에 가깝다. (진짜?)
* coercion: 타입 강제 변환
* scope: 변수가 어떤 것을 참조하는지를 결정하는 규칙 모음
* this: 동적 실행 컨텍스트
* 프로토타입: 두 객체를 연결하는 연결 장치
* 컴파일 3단계: tokenizing/lexing, parsing, 코드 생성
* hoisting: 선언이 스코프 아래에 존재하더라도 스코프 시작 부분에서 변수의 가시성이 확보됨 (영어 뜻: 끌어올리다)
* principle of least exposure (최소 노출의 법칙): 변수의 노출 범위를 최소화하자.
* 클로저: 함수가 정의된 스코프가 아닌 다른 스코프에서 함수가 실행되어도 스코프 밖에 있는 변수를 기억하고 이 외부 변수에 계속 접근할 수 있는 경우
* 클로저: 내부 함수가 외부 스코프에 있는 변수를 참고하는 것
* 클로저를 통해서 변수를 더 제한된 스코프로 캡슐화가 가능하다.
* 모듈: 관련된 데이터와 함수의 모음
JS를 구성하는 3개 주요 기둥
* 스코프와 클로져
* 프로토타입
* 타입과 타입 강제 변환
현재 이 책에서는 "스코프와 클로져"의 내용만 포함되어 있으며 다른 두 기둥에 대한 내용은 현재 시점에서 집필 중이다.
저자의 github 주소: https://github.com/getify
<총평>
* JS를 사용하면서 애매모호 했던 개념들을 확실히 이해할 수 있다.
* 적절한 코드와 그림을 통해 복잡한 개념의 이해를 돕는다.
* 번역이 잘되어 있어 내용이 잘 읽힌다.
* 비판적인 시각을 가지고 능동적으로 책을 읽자.
* 연습 문제를 직접 풀어보면서 설명된 개념들을 체득할 수 있다.

