본문 바로가기
개발공부_Blog/JavaScript

[BOOK] You don’t Know JS Yet

by 독서개발자 2024. 2. 14.

‘읽어봐야지’ 라며 생각만 했던 책 < You don’t Know JS Yet>

You don’t know JS는 ‘ 내가 언젠가 읽어봐야지’하고 생각만 하며 내가 읽을 개발도서 리스트의 상위에만 있었던 책이었다. 이 책은 도서관에서 자주 보던 거다. 겉표지만. 근데 너무 헐었고… 어려워보여서 좀 손이 안갔었다. 하지만 이번에 새로 개정판이 나왔다는 소식과 기회가 생겨(리뷰어당첨!) 책을 읽어보기로 마음먹었다.

 

책을 제일 먼저 받으면 보게 되는 것, 책표지와 두께, 목차, 가격ㅋㅋㅋ이다. 먼저 눈에 띄게 자바스크립트의 노란색이 눈길을 끌었다. 이 책은 주변에서 ‘그거 좀~ 어렵다~’라고 말하던 것과는 달리 착한 두께였다. 자바스크립트 딥다이브와 비교했을 때 한참 얇다.

 

나는 공부할 책을 읽을 때, 먼저 통독을 한다. 전체적으로 한번 내용을 훑어보고, 이후에 두어번 정도 더 읽는다. 그리고 필요할 때마다 찾아본다. ’이해했다’의 기준이 읽을 수록 달라지기 때문이다. 이번에도 역시 통독을 먼저 해보기로 했다. 이 리뷰는 통독을 하고 난 뒤 리뷰일 것이고, 차차 세부적으로 공부하며 더 포스팅 할 것이다.

 

You don't know JavaScript yet 두껰ㅋ

 

‘읽어보기 잘했다’ 고 느끼고 있는 중.

  • 이 책은 JavaScript의 문법 설명서가 아니다. 조금 더 고차원적인 책이다.

시작하기 부분에서는 JavaScript언어에 대한 설명… 그러니까, Javascript의 발전, ECMAScript그리고 Javascript를 둘러싸고 있는 web과 Javascript엔진에 대한 이야기 등 JavaScript에 대해 시야가 넓어질 이야기를 해준다. 그리고 우리가 당연하게 여기고 있던 것들에 대해 한번 더 생각해 볼 수 있는 주제들을 던져준다.

 

당연히 문법에 대해서도 이야기 한다. 하지만 이 책은 문법서가 아니기 때문에 하나하나 설명하지는 않지만, 그 기본 동작 위에 조금 심화된 내용, 큰 그림을 설명해준다. 사실 책을 읽으며 딥다이브를 다시 펼치고 싶은 충동이 들었다. 딥다이브를 읽었을 때는 뭔가 어렵고 2%부족했던 지식이 큰 개념의 설명을 듣고 나니 이해가 될 것 같았기 때문이다.

 

기본 문법과, 스코프와 클로저, 프로토타입, 클래스 등등 저자가 생각하는 JavaScript의 핵심 문법에 대한 설명을 한다. 문법에 대해 설명하면서 디자인 패턴에 대한 이야기도 언급하는데, 이는 JavaScritp의 기본 문법서에는 나와있지 않는 폭넓은 설명이라고도 할 수 있을 것 같다. ( 물론 디자인 패턴에 대한 내용을 알고 있어서 더 그렇게 느꼈을 수도 있긴하다. ㅎㅎ )

You don't know JavaScript yet 목차

 

분명 처음 읽었으면 조금 어려웠을 것 같다. 하지만 나도 ‘JavaScript에 대해 공부를 좀 해봤다~’ 하는 사람으로서…ㅋㅋㅋ 알고 있는 내용에 + 조금 더 업그레이드 된 시야에서 설명해주는 이 책이 정말 마음에 든다. 알고 있지만 새로운 JavaScript의 모습, 그리고 JavaScript에 대해 더 잘 이해하게 될 것 같아 공부할 의욕이 든다.

사진에 목차는 잘 안보이긴 하는데…..ㅠㅡㅠ APPENDDIX라고 매 part마다 부록이 있는데, 여기에서는 더 심화된 내용과 연습문제가 있다. 문법을 설명하고 활용을 해보지 않으면 잘 이해가 안가는 부분도 많은데, 이렇게 활용할 수 있는 챕터도 있어서 마음에 들었다. 글로 읽는 개념과 코드로 적용해보는 개념은 확실히 달랐다. 클로저에 대한 개념을 함수로 적용해 볼 수 있어서 더 이해가 잘 갔다.

 

책 내용 중 일부 소개 (간단) 

JavaScript는 인터프리터 언어인가? 컴파일 언어인가?

JavaScript의 스코프 이야기를 하면서 JavaScript가 인터프리터 언어인지, 컴파일언어 인지에 대해 정의를 내린다. JavaScript는 위에서부터 아래로, 한줄씩 읽어서 출력하는 인터프리터언어라고 알려져 있다. 하지만 JavaScript가 동작하는 모습을 보면 인터프리터보다는 컴파일에 더 가깝다고 이야기하며 이 문제에 대해 한번쯤 생각해 볼 필요가 있다고 주장한다.

 

아래 코드를 인터프리터 방식으로 설명해보면, JavaScript가 코드를 한줄씩 읽어들인다. 그리고 콘솔에 message를 출력하고 다음 message를 재할당할 때 ‘td’ 앞에 . 때문에 에러가 나야 한다. 하지만 실제 JavaScript가 동작하는 과정을 보면 바로 SyntaxError가 발생한다. 이는 JavaScript가 구문 전체를 parsing하는 중에 message의 구문에러를 발견하게 된 것이다. 이로써 JavaScritp는 한줄씩 코드를 읽고 실행하는 것이 아니라, parsing의 과정을 거친다고 주장한다. ( 이후 더 이야기 있으나 생략 )

 

let message = 'Hello world'
console.log(message)

message = .'td'

 

나도 저자가 이야기하는 JavaScript의 동작 과정을 생각해보니 인터프리터 보다는 컴파일에 가까운거 아닌가? 하는 생각이 들기도 했다. 그저 [ 자바스크립트는 —- 다 ] 라는 지식을 알고 있었던 나는 정말 코드가 동작하는 것을 기반으로 언어의 특징을 새로 배우는 것 같았다. 모든 지식을 흑과 백의 이분법적 사고로 나누기보다는 현상을 보고 더 넓은 층의 지식을 공부할 수 있는 기회가 됐다.

 

자바스크립트의 더 넓고 깊은 이해를 위해 읽어보면 좋을 것 같다.

1부 시작하기

  • 자바스크립트의 진화과정
  • 프로그램이 실제로 작동하는 방식
  • 일반적인 오해 바로잡기
  • 기본 구성요소, 타입, 클로저, 프로토타입

2부 스코프와 클로저

  • 렉시컬 스로프 중첩으로 변수의 스코프 노출 제한하기
  • 클로저를 통해 변수를 깅거하는 함수 살펴보기
  • 프로그래밍에서 가장 중요한 코드 구성 패턴인 모듈 소개

You don't know JavaScript yet 책표지

 

 

 

 

 

    "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

 

댓글