타입과 문법, 스코프와 클로저
이제는 정말 많은 자바스크립트 책들이 있습니다. 세상 모든 책장에는 자바스크립트 책 한 권 정도는 있을 것 같지만 제 기억의 책장에 남아 있는 책은 몇 권되지 않습니다. 그중 더글라스 크락포드의 "자바스크립트 핵심 가이드"는 자바스크립트의 나쁜 점을 간단명료하게 설명하면서 더 나은 코드를 만들 수 있도록 도와주었던 책으로 남아있습니다.
제목이 조금은 공격적인 카일 심슨의 'YOU DON'T KNOW JS'는 자바스크립트의 나쁜 점을 더글라스 책에 비하면 심할 정도로 꼼꼼히 다루고 있습니다. 그래서 조금은 지루한 감이 있지만 종종 아래와 같은 문장으로 웃음 짓게 합니다.
헷갈린다고? 여러분만 그런 게 아니다. - 74페이지
이 코드만 놓고 보면 자바스크립트는 미친 것 같다. -109페이지
You don't know JS는 5가지 시리즈로 구성되어 있습니다.
Scope & Closures
this & Object Prototypes
Types & Grammar
Async & Performance
ES6 & Beyond
제가 읽은 책은 Type & Grammar, Scope & Closures 부분을 번역하여 각각 ebook으로 발간되었고, 그 두 권을 합쳐 다시 종이책으로 인쇄된 책입니다.
아직 시리즈를 전부 다 읽어 보지 못했지만, 그중 타입과 문법에서 "4장 강제변환"은 특별합니다.
이 시리즈를 내면서 다짐했다. 다른 사람들이 다 피하려 한다고, 기벽 때문에 며칠 밤을 지새워 봤다고, 강제변환에서 도망치라고 하지 않겠노라고, 외려 여러분이 제대로 이해하지 못하고 있거나 그럴 시도조차 하지 않은 미지의 영역으로 직핼할 것이다. - 85페이지, 4장 강제변환 시작 부분
더글라스의 책에서는 값 비교 시 '=='보다는 '==='를 권장하지만 이 책은 '=='에서 발생할 수 있는 거이 모든 케이스를 확인해가며 '=='가 그렇게 나쁜 것 같지 않다는 의견을 제시합니다. 그리고 성숙한 개발자라면 이 정도쯤은 확인해야 된다고 얘기하는 것 같습니다.
스코프와 클로저에서는 자바스크립트 엔진이 동작하는 원리를 대화하듯 설명합니다. 대화를 자세히 듣다 보면 스코프가 어떤 방식으로 동작하는지, 왜 클로저가 생기는지 자연스럽게 이해할 수 있습니다.
전체적으로 난이도가 높다기 보단 자바스크립트 단점을 꼼꼼히 설명하고 ES6에서 개선된 방향과 폴리필을 보여주는 방식으로 되어 있어 조금은 지루하고 자바스크립트는 불안전하고 불편한 언어라고 생각될 수도 있습니다. 하지만 모든 개발언어는 장점과 단점이 있으며, 그 언어에 익숙해진다는 말은 장점보다는 단점에 대한 극복 방법을 하나씩 익혀가는 것이라고 생각합니다. 'You don't know JS'는 자바스크립트 단점을 극복하고 익숙해질 수 있도록 도와주는 책으로 기억될 것 같네요.
본 리뷰는 한빛미디어에서 제공된 책으로 작성되었습니다.