메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

You Don’t Know JS : 타입과 문법, 스코프와 클로저

한빛미디어

집필서

절판

  • 저자 : 카일 심슨
  • 번역 : 이일웅 , 최병현
  • 출간 : 2017-07-01
  • 페이지 : 282 쪽
  • ISBN : 9788968488528
  • 물류코드 :2852
  • 개정판정보 :개정판이 새로 출간되었습니다. 개정판 보기
  • 초급 초중급 중급 중고급 고급
4.8점 (16명)
좋아요 : 25

모호하고 애매한 여덟 가지 자바스크립트 개념 길라잡이 : You Don’t Know JS 시리즈

 

웹 초창기 시절부터 자바스크립트는 사람들이 대화하듯 웹 콘텐츠를 소비할 수 있게 해준 기반 기술이었다. 20년 가까이 흐른 지금은 엄청난 규모로 기술적 역량이 성장하였고, 세계에서 가장 널리 사용되는 소프트웨어 플랫폼이라 불리는 웹의 심장부를 형성하는 핵심 기술이 되었다.

자바스크립트는 처음 시작하고 실행하기가 가장 쉬운 언어지만, 다른 언어보다 완전히 숙달한 사람은 훨씬 적다. C/C++ 등으로 완전한 프로그램을 짜려면 언어 자체를 깊이 있게 알고 있어야 하지만, 자바스크립트는 언어 전체의 능력 중 일부를 수박 겉핥기 정도만 알고 사용해도 웬만큼 서비스가 가능한 프로그램을 만들어낼 수 있다.

바로 이 부분이 자바스크립트의 모순이자 아킬레스건이고, 이 책에서 다루는 주제이기도 하다. ‘You Don’t Know JS’ 시리즈는 자바스크립트의 모든 것, 그중 특히 착각하기 쉽고 이해하기 어려운 부분을 깊고 철저하게 파고든다.

 

 

『You Don’t Know JS』 시리즈 도서

  • You Don’t Know JS: 타입과 문법, 스코프와 클로저 강제변환의 유의 사항과 생성자로서의 네이티브 등 자바스크립트의 타입과 문법에 관한 모호한 개념을 저자 특유의 문체로 명쾌히 설명한다. 자바스크립트의 핵심인 스코프와 클로저에 대한 저자의 설명을 읽어보면 자바스크립트의 작동 원리가 머릿속에 그려질 것이다.
  • You Don’t Know JS: this와 객체 프로토타입, 비동기와 성능 호출부에 따라 this가 어떻게 바인드되는지, 제너레이터로 비동기 흐름을 어떻게 표현할 수 있는지를 비롯한 객체 프로토타입의 체계 같은 자바스크립트 핵심 개념을 이 책에서 배울 수 있다.

 

대상 독자

  • 초급에서 중/고급으로 레벨 업하고 싶은 자바스크립트 개발자
  • 자바스크립트 개발 경험이 있지만 때때로 개념이 헷갈리는 개발자
  • 원인 모를 자바스크립트 오류로 힘겨워하는 개발자

 

 

다 안다고 여겼던 자바스크립트, 정작 난 정확히 모르고 있었다.

 

자바스크립트는 웹의 태동과 괘를 같이 한 웹 프로그래밍 언어다. 웹의 심장부를 형성하는 대표 웹 프로그래밍 언어의 지위에 오른 자바스크립트는 사물인터넷(IoT), 증강현실(VR), 모바일 앱으로까지 영역을 확대하며 쓰임이 넓어지고 있다. 이처럼 자바스크립트 개발자가 웹 너머의 분야에서도 활약할 기회의 문이 열렸지만 자바스크립트에 완전히 숙달한 사람은 극히 드문 상황이다. C/C++ 등으로 완전한 프로그램을 짜려면 언어 자체를 깊이 있게 알고 있어야 하지만, 자바스크립트는 언어 전체의 능력 중 일부를 수박 겉핥기 정도만 알고 사용해도 웬만큼 서비스가 가능한 프로그램을 만들어낼 수 있기 때문이다.

바로 이것이 자바스크립트의 ‘모순’이자 ‘아킬레스건’이고, 이 책에서 다루는 주제다. 『You Don’t Know JS』 시리즈는 자바스크립트 중 특히 착각하기 쉽고 이해하기 어려운 부분을 깊고 철저하게 파고든다. 저자는 “그냥 이 정도면 됐지” 식으로 대충 이해하고 때우는 자세를 끊임없이 거론한다. 험한 길을 마주한 상황에서 쉬운 길로 돌아가라고 조언하지도 않는다. 자바스크립트에 대해 흔히 오해하고 있거나 잘못 이해하고 있는 여덟 가지 핵심 언어 요소를 완벽히 이해할 때까지 다양한 예제를 들어 깊고 철저하게 파헤쳐간다.

 

 

YDN_1_733size.jpg

 

카일 심슨 저자

카일 심슨

텍사스 오스틴 출신의 오픈 웹 전도사. 자바스크립트, HTML5, 실시간 P2P 통신과 웹 성능에 열정적인 관심이 있다. 열정이 없었다면, 이런 작업에 이미 진력이 났을 것이다. 저술가이자 워크숍 강사, 기술 연사이며, 오픈 소스 커뮤니티에서도 열심히 활동한다.

 

최병현 역자

최병현

서강대학교에서 컴퓨터공학을 전공했다. 3D 프로그래밍, 알고리즘, 웹 개발 등의 분야에서 5년 넘게 개발자로 일하고, 10여 년 간 번역 프리랜서로 IT, 게임, 과학 소설, 사회과학 분야의 책과 글을 번역했다. 『팀을 위한 Git』, 『빅데이터 처리를 위한 웹 개발 노하우 MongoDB와 PHP』(이상 한빛미디어) 등을 번역했다.
 
이일웅 역자

이일웅

20년 가까이 국내외 엔터프라이즈 현장에서 자바 전문 풀스택 개발자, 소프트웨어/애플리케이션 아키텍트로 프로젝트를 수행했다. 어느덧 50대를 바라보는 중년 아재가 됐지만 아직도 궁금한 기술이 많은 엔지니어이고, 20여 권의 IT 전문서를 번역하며 동료, 후배 개발자들과 지식과 경험을 나누는 일에도 힘쓰고 있다.
 

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 

새 프로젝트에서 웹서버 구성을 node.js로 하기로 했다. 나에게 한가지 문제가 있었는데, 프로그래밍에 입문하고 부터 지금까지 한번도 웹 프로그래밍의 세계에 발을 들여본적이 없다는 것이었다. 그렇기에 javascript도 제대로 사용해 본 경험이 있을리 만무했다. 기왕 하게된거 언어부터 차근차근 제대로 기초부터 쌓아보자 싶어 책을 찾아보기 시작했다. 이미 진행하고 있는 스터디도 있다보니 너무 문법적으로만 적혀있는 책이나 너무 레퍼런스 위주인 책은 부담스러웠다. 언어에 관한 책들은 대부분 입문책데, 입문자를 위한 책들은 대부분 프로그래밍 자체에 입문하는 사람까지 고려하다보니 실제로 읽을 부분은 굉장히 적은 경우가 많다. '기존 프로그래머들에게 딱 필요한 부분만, 궁금한 부분만 긁어주는 책이 없을까?' 하고 열심히 찾던 와중에 눈에 확 뜨는 책이 있었다. 바로, 오늘 리뷰를 작성할 You Don't Know JS 시리즈이다. 

 

you_dont_know_js_타입과_문법_스코프와_클로저_2.jpg

 

이 책은 일반적인 입문 책은 아니다. 주 독자층은 아래와 같을 듯 하다 : 
1. 여러 프로그래밍 언어를 익힌 적이 있는 상태에서 'javascript만의 특성을 익혀보고 싶다!'
    또는 '실제 js 개발자들의 노하우나 주의할 점을 알아보고 싶다!'
2. javascript를 오래 다뤘지만, '더욱 깊게 공부해서 효율적으로/제대로 사용해보고싶다!'
    또는 '내가 js를100% 활용하고 있는 것인지, 놓친 부분은 없는 걸지 궁금하다!'


일단, 이 책은 얇다. 282페이지 밖에 되지 않는다. 하지만 내용의 깊이는 깊다. 그 어떤 언어 책보다도 깊이있다. 나는 javascript를 사용해본적이 없는 초짜였기에 하나하나 실행해보며 읽느라 완독하는데에 꽤 오래 걸렸던 것 같다. 아마도 기존에 javascript를 사용하던 분들은 '오, 이런 부분도 있었어?' 하며 나보다는 빠르게 읽지 않을까 싶다.

"너는 자바스크립트를 모른다!" 라는 제목에서도 알 수 있듯이, 기존 사용자들이 대부분 놓치고 지나가거나 깊이 생각해본 적이 없거나 아예 모르고 있을 만한 내용들이 담겨있다. javascript에 대해 오해할 수 있는 모호한 부분들을 파헤치며 사실은 이게 이상한게 아니라 다 이유가 있는거야~ 라는 식의 마치 비밀이야기를 들려주듯이 진행되는 흐름덕에 뭔가 지금 나는 특별한 내용을 익히고 있다는 느낌을 받았다. 꽤 기분 좋은 느낌이었다 :-) 문법적인 규칙은 물론, 통상적으로 사용되는 방법, 실제로 동작되는 원리 등 다양한 내용을 서술하고있어 좋았다. 특히 틸트(~)부분에서 현업 응용사례를 보여주는 부분이 좋았는데, 정말 경계값 관련 연산이 필요할 시에는 한번 써먹어봐야겠다는 생각이 들었다!  

사실 제목만 보면 뭔가 바짝 긴장하고 봐야할 것 같은 책일 것 같지만 그렇지 않다. 저자가 굉장히 위트넘치는 문체로 서술하고 있어 편안하고 빠르게 읽을 수 있었다. 내용은 굉장히 깊이있어, 위트넘치는 말투와는 대비되었다. 종종 번역서를 읽다보면 번역어투가 거슬려 술술 읽히지 않거나, 단어에 대한 과한 번역이나 오역으로 인해 고생하곤 하는데, 이 책은 전혀 그렇지 않았다. 덕분에 마음에 쏙 들었다. 번역에 굉장히 신경썼다는 것이 느껴졌다. 개인적으로 쉽게 읽히느냐를 중요하게 생각하는지라 이 점들이 큰 장점으로 느껴졌다.

읽다보니 문득 '자바 퍼즐러'를 읽던 때가 떠올랐다. 'You Don't Know JS'는 '자바 퍼즐러'처럼 퀴즈식으로 진행되는 방식은 아니지만 얻을 수 있는 지식의 방향이나, 깊이, 꿀팁들이 비슷했다. 입문자를 위한 책이 아닌, 초~고급 프로그래머를 대상으로 했다는 점도 비슷하다. '자바 퍼즐러'를 읽어보셨던 분들은 이 점을 참고하시면 될 것 같다.

다 읽고 보니, 이 글의 서두에 기술한 '기존 프로그래머들에게 딱 필요한 부분만, 궁금한 부분만 긁어주는 책이 없을까?' 라고 생각했던 목적에 딱 맞는 책이 아닐까 싶다. 이전에 다양한 프로그래밍 언어를 접해본 경험이 있는 상태에서 빠르지만 깊이있게 javascript를 익히고 싶다면 이 책을 선택해보시길! 간만에 정말 좋은 책 읽은 느낌이다!!! :-D


여담
사실이 책은 한빛미디어에서 ebook으로 판매하고 있던 You Don't Know JS 시리즈 중 '타입과 문법'과 '스코프와 클로저'를 묶어 하나의 종이책으로 출판한 책이다. 이 시리즈 중 'this와 객체 프로토타입'과 '비동기와 성능'도 하나의 책으로 묶여져 출판되어있다. 이 책도 이어서 읽어보면 좋을 것 같다 :-)

 

 

 

불과 몇 년전만 해도 자바스크립트는 웹안에서만 주로 쓰이는 기술이었습니다. 서버프로그래밍의 보조적인 역할을 주로 수행하였습니다. 
 
요즘은 이 상황이 역전되어 가고 있습니다. Single Page App 개발 기법으로 웹 프로그래밍에서는 웹프로그래밍의 보조자가 아닌 핵심적인 역할을 수행하며, 서버프로그래밍을 보조적인 역할로 보이게끔 만들었습니다.  
 
웹 뿐만이 아니라 자바스크립트는 그 이외의 영영까지 확장하고 있습니다.  IOS 및 Android 등의 모바일 어플리케이션 뿐만 아니라 개인용 PC 데스크탑 어플리케이션 개발에까지 확장하고 있습니다.
 
이러한 다재다능한 언어인 자바스크립트는 배우기 쉬운듯 보이나 여러 프로그래밍들과는 다른 방식들이 많아서 어려움을 많이 겪었습니다. 
 
그러던 찰나에 눈에 들어온 책이 있습니다.  자바스크립트의 이러한 부분을 긁어 줄 것이라는 기대감으로 ‘YOU DON’T KNOW JS’라는 책을 읽게 되었습니다.
 
‘YOU DON’T KNOW JS’ 는 ‘타입과 문법, 스코프와 클로저’ 그리고 ‘this와 객체 프로토타입, 비동기와 성능’ 이라는 두 권의 책으로 나뉘어져 있습니다.  그 중 ‘타입과 문법, 스코프와 클로저’ 입니다.
 
책의 내용은 다른 프로그래밍언어를 접한 사람들이 자바스크립트를 접할 때 충분히 햇갈리고 어려워할 수 있는 많은 예들을 제공합니다.  사실 이러한 내용을 보면 볼 수록 ‘자바스크립트 과연 내가 능수능란하게 활용할 수 있을까?’ 라는 고심이 깊어졌습니다.  한 번 읽고 이 모든 것을 내것으로 만들기에는 무리가 있을 것입니다.  프로젝트나 실제 코딩을 하면서 책을 옆에다 두고 필요할 때마다 볼 생각 입니다.
 
그리고 책을 읽으면서 이 책의 개인적인 견해는 자바스크립트를 어느정도 공부가 된 사람들이 읽어야할 것 같다는 생각이 들었습니다. 자바스크립트를 접한 지 얼마 되지 않은 사람이 책을 보게된다면 자바스크립트를 싫어하게 될지도….
 

이 책의 서문에 이런 내용이 나옵니다.  ‘자바스크립트는 굉장한 언어다. 적당히 아는 건 쉬워도 완전히 다 알기는 어렵다….’  책을 읽으면 더더욱 공감이 됩니다. 

 

자바스크립트는 null 처리를 비롯한 많은 것들이 기존 언어와 다른 면이 많다.

그래도 자바스크립트를 코딩하면서 그런 많은 것들에 대해서 많이 생각하지 않았는데, 책을 보면서 자바스크립트에 대해서 구현방식에 대해서 많은 생각을 하게 되었다.

자바스크립트의 기본을 찬찬히 보지 않았던 나에게 타입부터 시작해서 클로저까지 많은 것들을 있는 그런 책이 되었다.

그렇게 많지 않은 양이어서 차근차근 보다 보면 금방 있어서 그것 또한 책에 매력이 아닌가 싶다.

 

번쯤은 자바스크립트에 대해서 알고 싶은 사람이라면 번쯤은 보면 좋은 책이다.

[You don't know js] 도서에 대한 리뷰를 해보려 합니다. 책을 읽고 내용을 정리한 적은 있지만 책에 대한 리뷰를 해본적은 없는 것 같은데 한빛미디어에서 진행하는 [나는 리뷰어다!] 이벤트를 통해 책을 받아보고 리뷰를 진행을 하려 합니다. (사실 원래 사려고 했던 서적…)

사실 이 리뷰는 7월 중순까지 진행하는 이벤트였습니다… (제가 메일을 정확히 확인 못한 탓이죠…#한빛미디어 죄송합니다 ㅠㅠ) 하지만 책을 다 읽고 리뷰를 진행하고 싶었고, 두껍지않은 2~300장 내외의 책이었지만 일과 병행하며 읽기에 쉽게 읽히는 책은 아니였습니다. (제가 게으른 탓이겠죠…)

한장 한장을 넘겨가며 깊게 고민해야 하는 부분이 대다수였던 책으로 분명 초보자를 위한 책은 아니었습니다.


잡설은 제외하고 책을 읽어본 것에 대한 느낌과 중요하다 생각되는 부분에 대한간략한 정리로 리뷰를 진행해보려 합니다.

Chap 4. 강제 변환

엥? 1번은 어디가고 4번부터…

이 책은 부제는 타입과 문법, 스코프와 클로저 입니다. Chap1 부터 문법이 나옴에도 불구하고 타입이라는 말이 첫 머리부터 오는데 이유가 있습니다. (제가 갖다 붙인걸수도 있겠네요)

물론 다른 챕터에서도 중요한 부분이 많지만, 간단한 정리와 ES6에 대한 설명들, ES6가 들어오면서기존에 쓰던 부분이 어떻게 보강이 되는지에 대한 설명이 대다수이고, 강제 변환만큼 중요한 챕터는 없었습니다.

모든 챕터 중에 가장 많은 페이지를 차지하고, 저자가 중요하게 생각한다는게 느껴지는 부분입니다.이 챕터를 읽으면서 저는 아직 중급자가 되기엔 멀었으며, 그저 자바스크립트의 겉을 핥고있는 너드라는걸 깨달았습니다. (주륵… ㅠㅠ)

명시적 형변환과 암시적 형변환에 대해 깊은 부분까지 파고드는데 형변환의 정의인 ToNumber, ToString, ToPrimitive가 어떤 상황에서 어떤 원리로 적용되는지에 대해 매우 자세하게 나와있습니다. (이렇게까지 해야 초급을 벗어날 수 있구나 라는걸 확실히 깨달을 정도로 DEEP하게!) 우리가 true/false로 알았던 값들이 사실은 완전한 true/false가 아닌 truthly/falsy였다는 것이 꽤나 신기했습니다. 그 전까지는 아무 생각없이 '아 이렇게 하면 false가 나왔지?? true가 나왔지??'하며 사용했던 부분을 다시 한 번 사용하면서 쓰게 되더군요.

Chap 5. 문법

가장 멘붕이 왔던 부분! [] + {} / {} + [] 였습니다. [] + {}의 결과는 “[object Object]”이며, {} + []의 결과는 0입니다. 강제 변환과 연관이 있는 부분으로 블록의 문법이 어떤 식으로 사용되는지나오며 보통은 사용하지 않으나, 한번 즈음은 사용될 일이 있는 문법이고 그 문법이 ES6를 만나 어떻게발전되는지에 대한 얘기들이 주를 이룹니다. 그리고 사용을 지향하는지 지양하는지를 알려주는데 노력합니다.

단점과 장점

제가 느낀 명확한 단점은 "사용자들이 어려워하는 부분을 알려주거나 ES6를 알려주거나...하나에 집중하는 편이 좋지 않을까" 하는 점입니다. 저자가 사용자들이 어려워 하는 부분에 대해 알려주고 싶고,ES6도 알려주고 싶고… 많은 것을 전달해주고 싶어하는 것을 알 수 있으나, 하나에 집중하지 못해 초보에서중급으로 넘어가고자 하는 사용자 (특히 ES6 문법을 모르는)들은 어려움에 봉착할 여지가 있다고 느꼈습니다. 하지만, ES6에 대해서 어느정도 알기만 한다면 기초의 꽤나 깊은 부분까지 알 수 있는 것 같습니다. 이 책을 읽고 You don’t know JS의 다른 시리즈들도 확실히 읽어야겠다는 확신했습니다.

결국 드리고 싶은 말은 [이 책을 읽기 전에 ES6만 어느정도 공부하고 보자] 입니다. 그러면 확실히 중급 이상으로 올라갈 수 있으며, 다른 시리즈까지 읽는다면 고급단계로 올라갈 수 있지 않을까 생각합니다.


마지막으로…

자바스크립트 서적을 공부하면서 한 계단을 올랐다고 느꼈던 책은 더글라스 크락포드의자바스크립트 핵심 가이드를 제외하고 처음이었습니다. 그 다음단계로 넘어가기가 힘들었는데 그 다음 계단을올라갈 수 있게 도와준 책이라 생각됩니다. 중고급 개발자로 올라갈 수 있게 도와주는 (번역된)서적이 적은 국내시장에서 한단계 올라갈 수 있는발판이 될 수 있는 책이라 확신합니다.

 

책 표지는 노란색을 써서 눈에 띄는 디자인으로 구성되어 있다. 

개인적으로 자바스크립트를 사용한 본 것은 잠시 다른 부서 업무 지원 또는 휴가로 인해 땜빵할 때 인터넷에서 찾아서 Copy and paste 한 게 다 일정도로 따로 책을 사서 보거나 해 본적이 없었다. 

하지만, 요즘 다양한 언어를 접하면서 현대 프로그래밍 언어에 내공을 쌓는 부분을 중점적으로 다룬다고 하여, 책을 읽기 시작했다.

 

 

책 서문에 밝힌 번역 원칙을 그대로 옮긴이가 최대한 지키려고 노력한 부분들이 책 중간 중간에서 많이 보여서 정말 맘에 드는 부분이었다. 종종 번역서를 보다가 보면 한 분이 번역을 했다고 되어 있는데, 글에 느낌이 한 사람이 아닌 경우가 있다. 이 책의 경우엔 역자가 두 분으로 Part를 나누어서 번역을 하셨는데, 원칙이 최대한 지켜진 것 같았다.

 


 

하지만, 나는 직접 결과를 프로그램에서 확인하는 것을 좋아하는데, 이 책은 


typeof undefined === "undefined"; // true

 

와 같은 형태로 나와 있다. 그래서 결과를 보기 위해 직접 코드를 작성해 보았고, 덕분에 자바스크립트를 조금 더 알게 되었다. 


또한, 자바스크립트를 웹상에서 바로바로 테스트 할 수 있다는 것도 이번 기회에 파악하게 되었으며, 다음에 혹시라도 자바스크립트를 사용하게 되면 책의 내용을 요긴하게 인용할 수 있을 것 같다. 

 

 

 

 

여기서 다룬 내용은 다른 현대 프로그래밍 언어에 있어서 자주 다루어 지는 주제이기에 앞으로의 나에게 도움이 될까 싶어서 책을 읽었는데, 다행스럽게도 나의 예상 같이 현재 하는 프로젝트에 도움이 되었다. 또한, 책장 가까이에 두고 종종 개념이 흐릿해질 때 쯤 다시 한 번 꺼내보고 싶은 책이다. 

 



 

 

Front-End 개발자가 아니라면 Javascript에 대해 잘 아는 이가 몇이나 있을까?
아니 그런 질문보다도 사실 요 근래 몇 년간 Front-End는 예전의 수준이 아니다.
근래의 Front-End는 향상된 Script 규격에 기반을 두며 Web의 흐름에 따라 상당히 deep 한 영역으로 발전했다. 
얼마 전 어느 커뮤니티 사이트에서 Front-End 개발자를 왜 나누는지, 왜 필요한지 묻는 게시글이 있었다.
글쓴이 입장에선 충분히 그런 생각을 가질 수 있다.

하지만 그는 여전히 과거에 사는 사람이다.

 

 

undefined

 

 

나 역시 글쓴이와 같은 과거에 머무른 사람이었다.
적당히 짜도 잘 돌아가는 자바스크립트. 딱히 깊이 공부해야겠단 생각이 들지도 않았고 그럴 시간도 없었다. 그러나 작년부터 Front-End의 괄목할만한 성장을 뒤늦게 알아차린 나는 View에 많은 관심을 갖게 된다. 이렇게 관심을 갖다보니 Front-End의 엄청난 공부양이 와닿았고 이제는 Front-End포지션이 필요한 이유를 몸소 알게 되었다.
어쨌거나 호기심에 어떤 프레임워크도 살짝 훑어보고 어떤 라이브러리도 살짝 훑어보지만 내실이 없어서 일까? 오히려 더 혼란만 야기되고 무엇인가 수렁으로 빠지는 느낌이 드는 시간을 보내고 있었다. 그러던 와중 이 책을 만나게 되었다.

 

 

undefined

 

 

이 책은 자바스크립트를 전혀 모르는 사람이 접하기에는 이르다.
자바스크립트를 적당히 아는- 하지만 그렇다고 잘 안다고 할 수는 없는 이들이 보면 많은 도움이 될 책이다.

대부분의 번역서들은 부자연스러운 문장이 많은데 이 책은 개발자가 번역하여 자연스럽게 대화하듯 읽히는 것이 장점이다.

 

 

 

IMG_7895.JPG

IMG_7899.JPG

 

IMG_7903.JPG

 

 

YOU DON’T KNOW JS는 1편 타입과 문법, 2편 스코프와 클로저를 담고 있다.

1편 타입과 문법은 강제 변환과 관련된 주의 사항과 생성자로서의 네이티브, 자바스크립트에 대한 기본 지식을 ES6에 기반을 둔 예제와 함께 수록하고 있다. 
2편 스코프와 클로저는 자바스크립트를 어느 정도 숙지하고 있는 상태에서 읽으면 도움 될만한 부분이다.
자바스크립트 언어가 내부적으로 어떻게 작동하는지를 이해할 수 있고, let이나 cons 같은 새로운 기능을 익힐 수 있는 알짜배기 책이다.

 

IMG_7905.JPG

 

 

끝으로 책의 말미 - 부록에는 다양한 자바스크립트에 대해 수록하고 있다.
ECMAScript, 네이티브, 호스트 객체, DOM 등 기본적이면서도 간과할 수 있는 부분 역시 부록으로 다루고 있다. 서두에는 이미 자바스크립트를 어느 정도 숙지하고 있는 이에게 좋은 책이라고 했으나, 자바스크립트 초보도 사전 처럼 찾아가며 읽어도 괜찮을 듯 하다. 물론 이들은 정독하기 보다는 자바스크립트를 익혀가면서 들어봤을법한 내용을 참고하는 형태로 읽어나가면 추후 많은 도움이 될 것이다.

 

중급자, 실무자들에게 확실한 개념정리를 해 줄수있는 책.
 
생각보다 얇다.
다른 언어들은 시간을 내서 배우지만 js는 배우지 않아도 쓸수있는 언어, 굴러만 가게 하면 되는 언어라고 착각하고 있었다.
 
예를들어 나조차도 굴러만 가면 된다고 생각하여 강제변환하던 부분도 많고 그것에 대해 깊게 파고들지 않았는데
이 책의 경우 강제변환의 유의사항, 특정 타입의 정의 등에대하여 상세히 설명해주고 이럴 경우 어떤 형식을 써야하는지, 어떤 형식은 쓰면 안되는지에 대한 기술들이 있어서 이해하기 쉬웠다.
 
이 책은 맞지 않는 형식을 쓰는 경우 일어나게될 위험성, 이 구문에선 이 형식을 써야만 하는 이유등이 예시와 함께 적혀있는 것이 많았는데 이 부분들이 특히 도움이되고 좋았다.
  
당연하게 굴러가게만 쓰던 모호한 개념들을 확실하게 정리를 해주는 책이다.
잘 정리된 목차와 높은 가독성으로 필요한 부분만 선택해서 보기도 좋고 전체적으로 스터디를 하기에도 무리없는 책.
실무자들 스터디 모임에 강력 추천 함.
 

간혹 개발자 중에는 기본서가 아니라면 두꺼운 책보다는 얇은 책을 선호하는 경향이 있다.

그중에 나도 포함된다. 책이 두껍다고 해서 꼭 좋은 내용을 담고 있는 것은 아니며 얇은 책도 그 나름대로 경쟁력이 있기 때문이다.

 

그리고 또한 얇은 책은 부담감을 줄여줘서 책을 처음부터 끝까지 한번 볼 수 있는 확률이 높다.

(나는 기술서를 볼 때는 라이브러리 성격의 책이 아니라면, 1번은 완독을 해야 한다고 생각한다.)

 

<You don't know JS 타입과 문법, 스코프와 클로저>

꽤 얇고 친숙한 디자인(노란색바탕에 JS...) 으로 어디에서나 부담없이 들고 다니면서 읽기에 좋게 구성되어 있다.

 

다만 책이 얇다고 해서 누구나 쉽게 볼 수 있는 책은 아니다.

특히, 자바스크립트를 처음 접하거나, 이제막 기본서를 읽어본 개발자에게는 적합하진 않다.

 

책의 내용은 기본서 처럼 기본 문법과 설명을 하고 있진 않다.

대신, 자바스크립트를 개발 하면서 제대로 이해하지 않으면 혼동을 할 수 있는 부분을 세세하게 집어가면서 설명을 해준다.

어느 부분을 보면 집요하다 할 정도로 꼼꼼하게 설명을 해준다.

 

내 생각엔 이 책은 기본서를 막 본 사람 보다는 어느 정도 개발을 경험 하고 나서 그동안 쌓인 궁금증이나

또는 좀 더 깊게 학습을 하고 싶은 사람에게 적합하다고 본다.

 

그런면에서 You don't know JS는 상당히 좋은 책이며, 반드시 한번 쯤 봐야하는 책으로 추천한다.

(위에서도 언급했지만, 이제 막 기본서를 마친 사람에게는 그다지 추천하진 않는다. 이제막 개발의 재미를 느껴야 하는데 그 흥미를 잃을까봐... )

 

이 책의 성격을 나타내는 문구가 책에 있어 아래에 소개한다.

 

"본 시리즈의 성격상 여러분의 지식이 얼마나 확실한지 요리조리 쿡쿡 찔러볼 생각이고, 운 좋으면 그 과정에서 여러분은 몰랐던 새로운 진실에 눈을 뜨게 될 것이다."

나름 개발자로 18년 째, 소프트웨어 아키텍트 8년째 지내오면서도 

주로 Back-End의 설계를 맡아왔을 뿐 Front-End는 소규모이거나 협력사의 몫인 경우가 많았다. 

아무래도 RIA를 쓰는 경우가 많았고, 대규모 프로젝트인 경우엔 RIA의 개발사의 지원을 받으며 개발하는 경우가 많았으니 고민의 대상이 아니었던 거다.

 

4년 전 대규모 솔루션 개발 프로젝트를 시작하며, RIA에 대한 의존성을 줄여보자고 HTML5, Javascript 기반의 Front-End를 계획했는데, 공교롭게도 아키텍트 리더께서 내게 Front-End를 맡기셨다. 경험이 거의 없는데도.

 

그 때 사원급 후배 둘을 데리고 Front-End의 표준을 잡아가며 Javascript의 어마무시함을 몸소 체험했었는데.. 150명도 넘는 개발자들의 비난을 한 몸으로 받으며 욕 먹으며 버텨낸 것 같다. 

 

그 때의 가장 큰 이슈는 개발자들이 Javascript에 익숙하지 않은 것, 브라우저마다 결과가 다르게 나오는 것, 비동기.. 그리고 보증되지 않는 숫자의 범위 같은 것이었다. 

세상에.. 이 책을 이제서야 보다니. 

4년전 내가 고생하던 시기에 이 책을 만났다면 먼저 내가 한 권 읽고, 

프로젝트 개발자 전원에게 윤독을 시켰을 만한 책이다. 

 

그들이 내게 물어보던 수많은 '이건 왜 이렇게 안되요?' 에 대한 답들이 저자의 편안한 말투 (번역가의 능력인지도)로 설명되어 있다. 

 

때로는 이해 안되는 표준에 대해서도 저자 역시 의문을 던지며 나와 같은 눈높이로 대화하는 것 같은 느낌이다. 

마치 Stack Overflow에서 한 땀 한 땀 캐온 듯한 글들.. 

 

나도 그랬지만, 많은 개발자들이 자바스크립트 누구나 아는 언어라고 생각한다. 개발자들이 자신의 이력서에는 쓰기 부끄러워할 정도고 (예전엔 정말 그랬다!) 때로는 디자이너의 이력서에 들어 있는 경우도 많다. 

하지만 우리가 진짜 자바스크립트를 알까? 그 안에 녹아 있는 생각들과 표준, 문법, 구동 방법 등을 알고 있지 못하다. 얼마나 많은 Front-End의 기능들이 비효율 적으로 만들어 지고 있는지.. 

 

내가 자바 스크립트 좀 해! 라고 생각하시는 분들이 한 번 쯤 읽어보며 나의 부족함을 채우는데 도움이 되었으면 하는 책이다.

요즘 Node.js라는 것을 사용하면서 자바스크립트(Javascript)는 더 이상 예전 웹 브라우저에서만 돌아가는 언어가 아니다. 고정된 HTML 문서에 동적인 뭔가를 작업하기 위해서는 자바스크립트 사용이 필수였는데 그때는 인터넷이나 책에 굴러다니는 소스코드를 복사해서 붙여넣기 수준에 불과했다. 하지만 웹에서 윈도우 프로그램 같은 고차원적인 UI를 제공하고 Node.js로 서버 프로그래밍까지 하게 되면서 자바스크립트는 더 이상 예전 자바스크립트가 아니다. 그냥 생각없이 가져다 쓰는 코드를 넘어 이제는 정말 제대로 알고 써야하는 시점이 온 것이다. 이럴 때 도움이 될 만한 책을 찾아보다 ‘YOU DON'T KNOW JS’을 읽었다. 읽으면서 “오...”, “아하!”의 연속이었는데 자바스크립트를 어렴풋이 알고만 있는 사람에게 큰 도움이 될 것 같다.

 

YOU DON'T KNOW JS라는 책은 총 2권으로 되어 있다. ‘타입과 문법, 스코프와 클로저’와 ‘this와 객체 프로토타입, 비동기와 성능’으로 나누어진다. 이번에 본 책은 ‘타입과 문법, 스코프와 클로저’인데 예전부터 궁금했던 내용이라 정말 흥미롭게 읽었다. 뭔가 알 것 같으면서도 모르는 것 같은 언어, 알지만 자세히 모르는 자바스크립트. 프로그래밍 후 버그를 예상할 수 있어야하는데 내부적으로 어떻게 돌아가는지 잘 모르니 답답했다. 그래서일까 개인적으로는 C언어보다 더 어렵게 느껴졌던 언어가 자바스크립트였다. 그래도 다양한 개발을 위해 넘어야할 산이 자바스크립트다보니 그냥 넘어갈 수는 없는 노릇. 이 책을 잘 내 것으로 만든다면 자바스크립트를 또 하나의 주 무기로 사용할 수 있을 것이다.

 

‘타입과 문법, 스코프와 클로저 YOU DON'T KNOW JS’는 말 그대로 자바스크립트의 타입, 문법, 스코프, 클로저에 대해서 자세히 설명한다. 이 책의 초반만 잠시 읽어봐도 내가 자바스크립트에 대해 얼마나 무지했는지 알게 해준다. 이런 것 까지 알아야하나 싶은 내용도 있지만, 대체적으로 프로그래밍을 할 때 예상치 못한 오류와 버그를 잡을 때 큰 도움이 될 만한 내용이었다.

 

자바스크립트는 참 관대한 언어다. 그냥 별생각없이 마구 코드를 짜도 오류 없이 돌아가는 경우가 많다. C언어에 비해 언어 자체적으로 해주는 일이 많기 때문이다. 자동 형 변환이 일어나는 경우가 많아 좀처럼 오류메시지를 보여주지 않기 때문에 당장은 좋은 것 같아도, 나중에 나타나는 수많은 버그는 감당하기 힘들다. 이 책은 이것을 예방하는 힘을 기를 수 있게 도와준다. 예로 배열의 인덱스를 숫자가 아닌 값으로 했을 때 배열길이(length)에 영향을 미치지 않는다는 사실을 나는 이 책을 읽고 나서야 알게 되었다. 경험적으로 알고 있는 사람도 있겠지만 이렇게 책으로 한번 봐두면 나중에 시행착오를 줄일 수 있다. 어떨 때 ture이고 false인지 아니면 undefined인지도 제대로 배울 수 있다.

 

스코프와 클로저에 대해서는 대강 어렴풋이 알고 있었는데, 이 책을 통해 정말 제대로 공부할 수 있었다. 다른 내용도 좋지만 스코프와 클로저를 이렇게 친절하고 자세하게 쓴 책은 처음인 것 같다. 뭔가 다 이해한 것 같은 느낌이 든다.

 

깨달음의 순간이 이럴 것이다. “아, 클로저는 내 코드 전반에서 이미 일어나고 있었구나! 이제 난 클로저를 볼 수 있어.” 클로저를 이해하는 것은 네오가 매트릭스를 처음 봤을 때와 같을 것이다. (P.240)

 

C, C++은 처음에 배울 때 고생하고 나중에는 큰 문제가 없다. 반면 자바스크립트는 그 반대라고 생각한다. 그 이유는 우리가 자바스크립트를 제대로 배우지 않아서 그런 것 같다. 태생부터가 그런 언어이기 때문에 어쩔 수 없었지만 이제는 다르다. 웹 브라우저를 넘어 정말 다양한 곳에서 쓰이는 만큼 이제는 자바스크립트를 정말 제대로 배워야할 것 같다. 그 길에 ‘타입과 문법, 스코프와 클로저 YOU DON'T KNOW JS’ 책이 큰 도움이 될 것이다. 자바스크립트 코딩을 할 때 바보 같은 짓을 줄이기 위해 체화가 될 때까지 곁에 두고 자주 읽어야겠다. 그나저나 이 책을 읽고나니 ‘this와 객체 프로토타입, 비동기와 성능’의 내용도 무척 궁금하다.


# 자그마한 책이다.

생각보다 얇고 작은 판형의 책이다. 출퇴근 시에 들고 다니며 부담 없이 읽을 수 있는 크기이다. 표지 디자인은 노란색과 회색이 조화를 이루어 아기자기하며, 내부는 가독성이 높은 한빛미디어 IT 도서의 편집 디자인을 그대로 이어받았다. 출판사 고유의 느낌을 깔끔하게 잘 살렸다는 점에서 장점이 있다.
 
# You don't know JS 시리즈는 여러 권이 있다.
이 책은 원래 이북으로 출간되었던 책 네 권을 두 권씩 묶어서 종이책으로 출판한 것이다. 현재는 "비동기와 성능, this와 객체 프로토타입" 도서와 "타입과 문법, 스코프와 클로저" 도서의 2권이 시리즈를 이루고 있다. 같은 You don't know 시리즈로 해외에서 출간된 "ES6 & Beyond"라는 도서도 있지만 아쉽게도 아직 번역되지 않은 모양이다. 다행히도 ES6는 "ECMAScript 6"이나 "러닝 자바스크립트" 등의 다른 양서가 많이 출간되어서 미번역 부분이 크게 아쉽지는 않다.
 
# 자바스크립트에서 가장 혼동이 오는 부분만 설명하는 책이다.
언어 입문서도 아니고 팁이나 활용 사례 모음집도 아니다. 자바스크립트 언어 자체의 가장 난해한 부분들을 설명하기 위해 저술된 책이다. 자바스크립트는 컴파일을 하지 않는 언어인 데다 해석 엔진도 상당히 너그러운 편이다. 그래서 웬만큼 오류가 있어도 제대로 동작하는 것처럼 보이기 때문에, 깐깐한 OOP식 프로그래밍에 익숙한 개발자들을 꽤 힘들게 한다. 특히 이 책의 주제인 타입과 스코프, 클로져 문제는 디버깅할 때 자바스크립트에 익숙하지 않은 사람들을 거의 미치게 하기도 한다. 개인적으로는 자바스크립트의 강제 형 변환을 무척 싫어하는 편인데, 이 책을 읽고 조금은 익숙해진 느낌이다.
 
# 번역에는 큰 문제가 없는 것으로 보이나 오·탈자가 조금 있다.
번역자 2인이 모두 개발자 출신이며 번역의 질은 크게 흠잡을만한 데가 없다. 오·탈자의 숫자는 그다지 많은 편은 아니나, 간혹 중요한 개념 설명에서 오·탈자가 있는 경우가 있다. 난해한 내용을 이해하려고 노력하는 중에 등장하는 오류는, 독자의 몰입을 상당히 방해하기 마련이다. 그래도 지금은 많은 이들의 도움으로 문제 대부분이 바로잡혔으니, 출판사의 해당 도서 오·탈자 페이지를 꼭 참조하기를 추천한다.
 
# 대상 독자는 자바스크립트를 진지하게 익히려는 모든 학습자이다.
이 책은 귀여운 디자인과 얇은 두께에 비해서 내용이 가볍지 않다. 모든 개발자가 꼭 읽을 필요가 있는 책도 아니다. 사실 이 정도는 잘 몰라도 검색엔진에서 소스를 가져다가 쓰는 데는 별문제가 없다. 그러나 최근 5년간 자바스크립트 생태계의 혁신과 대부흥을 보며 본격적인 자바스크립트 공부를 시작한 사람들이라면 얘기가 다르다. 아직 자바스크립트 언어의 특성에 익숙하지 않은 사람들에게는 크게 도움이 된다. 언어의 내부 동작에 대해서 심층적으로 학습할 수 있기 때문이다. 한국어 번역 전에도 고수들 사이에서는 이미 입소문을 탔던 내용이니만큼, 강력히 추천할만한 양서임은 분명하다.
 

 

undefined

 

난 자바스크립트를 좋아하지 않는다. 동적 언어인데다 일관성이 떨어지는 부분이 있어 항상 불안하다. 하지만 좋아하지 않는다고 사용하지 않을 수 없을만큼 웹 프로그래밍에서 자바스크립트는 필수적이다. 또, Node.js로 자바스크립트는 더욱 강력해졌다.  

자바스크립트 완벽가이드로 자바스크립트를 공부했지만 난해한 부분들만 다시 공부하기위해 2회독을 하기엔 방대한 양 때문에 미루고 있었다.

마침 <You Don’t Know JS: 타입과 문법, 스코프와 클로저>를 리뷰하게되었고 내게 꼭 필요했던 책이기에 열심히 정독했다.

 

<You Don’t Know JS: 타입과 문법, 스코프와 클로저>의 첫인상은 오! 얇다. 였고 깔끔하고 산뜻한 노란 표지도 마음에 들었다. 전공 서적 답지 않은 두께와 표지의 재질덕에 손에 착 감기는 맛이 있어 들고 보기도 좋았다.

 

<You Don’t Know JS: 타입과 문법, 스코프와 클로저>는 서문의 목표대로 '어려운 부분'을 심층적으로 이해하고 학습할 수 있게 해준다. 헷갈리기 쉬운 부분을 짚어주고 피해야 할 것, ES6에 도입된 개념, 폴리필 등을 언급해준다. 마치 고수의 노하우를 집약해서 듣는 기분이다. 깊이있는 내용을 유머러스하게 설명해주고 번역에도 잘 녹아있다. 특히 컴파일러 이론과 함께 스코프를 설명해주는 부분이 좋았다.

 

다만, 자바스크립트를 사용해본 사람을 대상으로 하기때문에 입문서로는 알맞지 않다. 책 소개에서 말하는 대상 독자는 아래와 같다.

- 초급에서 중/고급으로 레벨 업하고 싶은 자바스크립트 개발자

- 자바스크립트 개발 경험이 있지만 때때로 개념이 헷갈리는 개발자

- 원인 모를 자바스크립트 오류로 힘겨워하는 개발자

 

아쉬웠던 부분은 내용에 영향을 미칠 수 있는 오탈자의 존재이다. 대부분은 한빛미디어 홈페이지에서 확인 할 수 있고 2쇄 인쇄시에 수정될 것 같다.

 

난 기억력이 좋지 않아 헷갈릴때마다 다시 볼 예정인데 얇은 두께가 부담을 덜어준다.

 

<You Don’t Know JS>는 시리즈로 되어있으며 이 책 외 <You Don’t Know JS: this와 객체 프로토타입, 비동기와 성능>가 두번째로 출간되었다. <You Don’t Know JS: 타입과 문법, 스코프와 클로저>의 만족도가 높아 <You Don’t Know JS: this와 객체 프로토타입, 비동기와 성능>도 꼭 보려고한다.

 

 

You Don't Know JS: 타입과 문법, 스코프와 클로저
 

 

카일 심슨 저 / 이일웅, 최병현 공역 | 한빛미디어 | 2017.07.01

페이지 528 | ISBN 9788968483448


"모호하고 애매한 여덟 가지 자바스크립트 개념 길라잡이_You Don’t Know JS 시리즈"

 

자바 스크립트를 공부하는데 있어 정말 애매하게 알고 있었던 부분들을 쏙쏙 집어주는 책이다. 보통 프로그래밍 책들은 두꺼운 두께를 자랑하며 우리의 공부 의욕을 떨어뜨리며 들고다니기 힘들게 되어있지만 여러개의 시리즈로 분권되어 있어 간편하게 들고다닐수 있어 독자에 대한 작가의 배려심이 돋보인다.

 

자바스크립트, 깔보지 말고 이 책을 통하여 자바스크립트에 대해 깊게 공부해보자.

 

 

오늘은 Kyle Simson님의 입니다. 이 책은 기존에 전자책으로 출간된 두 권을 책을 한 권의 종이책으로 담아 출간하였습니다. 이 책은 Javascript의 특징과 다른 언어와의 차이로 말미암아 실수하기 쉬운 부분을 정리하여 독자에게 제공하고 있습니다.

 

시리즈는 현재 6개의 버전으로 출간되었으나 국내에는 4권이 번역되어 서비스되고 있습니다. 앞으로도 지속적으로 출간될 것으로 예상합니다. 이 책은 Javascript 개발자는 반드시 봐야하는 책으로 생각되며, 리뷰를 진행하기에 앞서 리뷰에 참여하게 도와주신 한빛미디어 관계자님께 감사의 말씀을 전합니다.

 

You Don't Know JS 시리즈

Kyle Simpson의 You Don't Know JS는 현재 6권이 출간되어 있습니다. 

 

- Scope & Closures (2014.3) [링크]

- this & Object Prototypes (2014.7) [링크]

- Types & Grammar (2015.2) [링크]

- Async & Performance (2015.2) [링크]

- Up & Going (2015.3) [링크]

- ES6 & Beyond (2015.12) [링크]

 

국내에 출시된 서적은 다음과 같습니다. 제공하는 링크는 전자책 링크입니다.

 

- 스코프와 클로저 [링크]

- this와 객체 프로토타입 [링크]

- 타입과 문법 [링크]

- 비동기와 성능 [링크]

 

시리즈에 대해 저자가 한 메시지는 다음과 같습니다.

 

본 시리즈는 자바스크립트에 대해 가장 흔히 오해하고 있거나 잘못 이해하고 있는, 특정한 핵심 언어 요소를 선정하여 아주 깊고 철저하게 파헤친다. 

 

...

 

본 시리즈는 여러분이 자바스크립트를 제대로, 깊이 있게 이해할 수 있도록 도와주는 것을 목표로 한다.

- 카일 심슨

 

이 책에서 다루는 내용은?

이 책은 앞에 소개했던 <타입과 문법>과 <스코프와 클로저> 두 권을 엮어 출간한 책입니다. 

 

<타입과 문법>을 읽으며, 필자와 연관된 에피소드를 하나 소개합니다. 필자만 그렇게 느끼는지는 모르겠지만, 자바스크립트의 강제 변환은 어렵습니다. 물론 다른 언어와 달리 자바스크립트를 깊이 학습한 것은 아닙니다만, 다른 언어와 다르게 동작하는 상황이 많습니다.

 

다음 문제의 결과를 한 번 예측해보세요. 결과를 예측한 후, Node의 REPL이나 웹 브라우저를 활용하여 결과를 확인해보세요.

 

'' + ''

'' + {}

{} + ''

[] + []

[] - []

{} + {}

{} - {}

{} + []

[] + {}

{} - []

[] - {}

 

아마도 여러분의 예상과 결과가 많이 다를 것입니다.

 

필자는 이 문제를 이해한 내용을 정리하여 얼마 전 연구실에서 자바스크립트 강제 변환에 대한 세미나를 한 적이 있었습니다. 여러분의 예측과 다르게 동작하죠? 필자는 자바스크립트에 대한 학습량이 많지 않아 준비하며 힘들었습니다. <타입과 문법>으로 학습하며 잘못 이해했던 부분도 발견했습니다. 만약 이 책을 먼저 만났더라면, 실수도 없고 좀 더 깊이 있는 세미나를 진행할 수 있었을 것 같아 아쉬움이 남습니다. 조만간 지난번에 발표했던 내용을 보강하여 다시 한번 진행해야 할 것 같습니다. 

 

위 문제를 유추해보고, 결과에 대해 이해하기 어렵다면 <타입과 문법> 편을 꼭 살펴보세요. 물론 자바스크립트 스펙을 보면 정리가 되어 있지만, 개인적으로는 이 책을 보는 것이 훨씬 나은 선택이라고 확신합니다. 물론 좀 더 나아가려는 목적의식이 있으면 당연히 스펙을 보는 것이 좋겠지요.

 

<스코프와 클로저> 부분은 자바스크립트를 조금이라도 사용했던 분이라면 대부분 이해하고 있을 것으로 생각합니다. 이 문제를 경험하고 의아하게 생각하지 않은 자바스크립트 개발자는 없을 것으로 생각합니다. 이 부분은 자바스크립트의 스코프와 클로저에 대한 정리를 비롯하여 실수하기 쉬운 부분을 소개하고 있습니다. 또한, 실수를 예방하고 저자가 추천하는 코딩 방법을 제시하고 있습니다. 

 

만약 자바스크립트 <스코프와 클로저>에 대해 아직 이해하지 못한 분이라면, 관련 내용을 정리하기에는 매우 좋은 단락이라고 생각합니다.

 

마치면서...

를 읽고, 그동안 자바스크립트를 사용하며 잘못 이해하고 있었던 점을 명확하게 이해할 수 있었습니다. 하지만 필자는 조만간 다시 한번 읽어보려고 합니다. 그만한 가치가 있는 책이라고 생각합니다. 초보자가 보기에는 조금 어려운 내용을 기술하고 있지만, 차분히 읽고 정리하면 충분히 이해할 수 있을 것으로 생각합니다. 

 

시리즈는 자바스크립트 개발자라면 꼭 읽어야 할 책이라고 생각합니다. 다음 시리즈인 this와 객체 프로토타입, 비동기와 성능도 기회를 만들어 꼭 읽어봐야겠습니다. 

나 역시도 자바스크립트를 구글링에 의존해왔는데, 아주 기본적인 개념부터 하나하나 잡아주는 책으로 구글링에 의존하는 사람들에게는 꼭 추천해줄만 하다. 다만, 자바스크립트를 이제 막 배운사람에게는 어려울 수도 있는 책으로, 얼추 써보면서 실무로 익혔지만 개념이 부족한 사람들에게 더 어울리는 책

자바스크립트를 웹으로 사용할때 주된 핵심은 완성이였다.

 

어떤 웹 사이트를 만들고 그 기능이 문제 없이 돌아 간다는 것 하나에 초점을 맞추고 거기서 끝을 항상 맽으며 

 

자바스크립트 자체에 집중하지 않았다. 

 

공부 시간 대비 새로운 오픈소스를 익히는게 웹의 완성 측면에서 이득이라는 생각이 들었고

 

항상 뒷 전으로 밀어버렸던 자바스크립트 공부를 

 

이 책은 다시 내가 알던 자바스크립트가 끝 이 아니라는 걸 상기 시켜준다. 

 

책 자체도 부담 없이 읽을 수 있을 양으로 되어 있다.

 

틈틈히 한 챕터씩 읽으면 실력 향상에 많은 도움이 될 책이다. 

부록/예제소스
자료명 등록일 다운로드
DOWNLOAD 예제소스(스코프와 클로저) 2022-08-02 다운로드
DOWNLOAD 예제소스(타입과 문법) 2022-08-02 다운로드
결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
You Don’t Know JS : 타입과 문법, 스코프와 클로저
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
You Don’t Know JS : 타입과 문법, 스코프와 클로저
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
You Don’t Know JS : 타입과 문법, 스코프와 클로저
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실