실무에서 자바스크립트를 많이 쓰지만 copy해서만
써서 그랬는지 스코프와 클로저.. 너무 어려웠습니다...
몇몇 장에서는 흥미로운 자바스크립트 엔진,컴파일러가 .. 어떡해 코드를
읽어내려가는지.. 새로운걸 알게되었고 ..
자바스크립트는 역시 문법이 난해하다 ...라는 것도 ..
규칙적이지 않다라는것도 ...
정말깊게 자바스크립트를 파고 싶은분 추천...합니다...
니들이 자바스크립트를 알아! 자바스크립트의 스코프와 클로저를 제대로 이해해 보자!
자바스크립트는 아마 작업하기 가장 쉬운 언어 중 하나지만, 다른 언어보다 완전히 숙달한 사람은 훨씬 적다. C나 C++ 같은 언어로 완전한 프로그램을 짜려면 상당한 수준의 깊은 지식이 필요한데 자바스크립트는 언어에 대한 표면적인 지식만 겨우 알더라도 완전한 프로그램을 만들어낼 수 있다.
자바스크립트의 고급 개념은 겉으로 보기에는 단순하게 보여서 개발자는 그저 보이는 대로 기능을 사용하고 기능이 수면 아래에서 어떻게 작동하는지는 별로 고민하지 않는다. 그러나 세심히 탐구하지 않으면 경험 많은 자바스크립트 개발자도 제대로 이해하지 못할 정도로 복잡하고 미묘한 언어 메커니즘을 가지고 있다.
바로 이 부분이 자바스크립트의 모순이자 아킬레스건이고, 이 책에서 다루는 주제이기도 하다. 『You Don't Know JS』 시리즈는 자바스크립트의 핵심 요소 중 가장 착각하기 쉽고 이해하기 어려운 부분을 깊고 철저하게 파고든다.
이 책은 『You Don't Know JS』 시리즈의 첫 책으로 자바스크립트 개발자가 제대로 이해하지 못하고, 잘 다루지도 못하는 스코프와 클로저의 작동 방식과 용도를 자세히 알려준다. 『You Don't Know JS』 시리즈와 함께 진정한 자바스크립트를 배워 보자.
대상 독자
『You Don’t Know JS』 시리즈 도서
이제는 Copy & Paste는 안녕! 이제는 자바스크립트를 제대로 알고 쓰자.
이 책의 주요 독자 중에는 전문 프로그래머로서 훈련받은 이들이 많을 것이고, 아마도 C나 C++ 같은 언어를 능숙하게 사용할 줄 아는 이들도 적지 않을 것이다.
C나 C++를 처음 배웠을 때를 떠올려 보자. 다짜고짜 "Hello World" 출력을 배우는 경우도 있겠지만, 기초를 튼튼히 다지면서 배웠다면 함수의 선언, 형태, 입출력, 지역변수와 전역변수의 차이, 컴파일 과정 등도 익혔을 것이다. 이것은 언어의 규범을 익히는 과정이고, 해당 언어로 쓰인 코드 한 줄 한 줄이 어떤 역할을 하는지 이해해 나가는 과정이다. 그리고 이런 언어의 규범을 익혀야 그 언어를 한계까지 최대한 활용할 수 있다.
C나 C++ 컴파일러가 상당히 엄격하게 굴기는 하지만, 일반적으로 C나 C++ 사용자들은 이런 규범을 익히는 과정을 거치는 경우가 많다. 하지만 자바스크립트는 어떤가? 기본적으로 상당히 쉽게 배울 수 있는 언어라서 대학에서 배우는 경우도 드물고 배우더라도 언어 자체의 구조와 작동 방식을 배우기보다는 자바스크립트를 가지고 브라우저에서 무언가 동작시키는 실습 수업이 대부분이다. 직장에서 배우는 경우는 말할 것도 없다. 늘 촉박하게 결과를 내야 하는 기업에서 한가하게 언어의 구조를 고찰하고 있을 수는 없다. 더군다나 배우기 어렵지도 않으니 말이다.
자바스크립트 엔진은 상당히 너그러워서 '적당히' 코딩해도 오류를 뿜어내는 일 없이 '적당히' 처리해준다. 그래서 자바스크립트를 사용하며 "뭘 했는지는 모르겠지만, 어쨌든 원하던 결과는 나왔어!"라고 약간은 찜찜해하며 넘어간 적이 있을 것이다. 아마도 이런 특성 때문에 자바스크립트를 학교에서도 실습에 사용하고 기업에 서도 아무나 시켜서 빨리 배우라고 할 수 있는 것이리라. 그리고 많은 이들이 자바스크립트를 욕하는 이유기도 하다.
그러나 저자 카일은 『You Don't Know JS』 시리즈에서 자바스크립트를 사용할 때도 C나 C++ 같은 아니 어쩌면 더 까다로운 규범을 익혀야 한다고 말한다. 더 깔끔하고 더 안전한 코드를 작성하고 자바스크립트의 능력을 최대한 활용하기 위해 알아야 할 것이 있다는 것이다. 언어의 한계를 최대한 활용하여 효율적인 코딩을 하길 좋아하는 고급 프로그래머라면 이 책을 즐겁게 읽을 것이다.
1 스코프란 무엇인가
1.1 컴파일러 이론
1.2 스코프 이해하기
1.3 중첩 스코프
1.4 오류
1.5 복습하기
2 렉시컬 스코프
2.1 렉스타임
2.2 렉시컬 속이기
2.3 복습하기
3 함수 vs 블록 스코프
3.1 함수 기반 스코프
3.2 일반 스코프에 숨기
3.3 스코프 역할을 하는 함수
3.4 스코프 역할을 하는 블록
3.5 복습하기
4 호이스팅
4.1 닭이 먼저냐 달걀이 먼저냐
4.2 컴파일러는 두 번 공격한다
4.3 함수가 먼저다
4.4 복습하기
5 스코프 클로저
5.1 깨달음
5.2 핵심
5.3 이제 나는 볼 수 있다
5.4 반복문과 클로저
5.5 모듈
5.6 복습하기
부록 A 동적 스코프
부록 B 폴리필링 블록 스코프
부록 C 렉시컬 this
부록 D 감사의 말
카일 심슨(Kyle Simpson)
카일 심슨(Kyle Simpson)
You Don't Know JS : this와 객체 프로토타입
카일 심슨(Kyle Simpson)
리얼타임 eBook 안내
PDF 형식으로 제공되며, 다운로드한 eBook은 PDF 포맷을 지원하는 디바이스 또는 프로그램에서 제한없이 열람할 수 있습니다. 또한 eBook 내의 텍스트 검색 및 인쇄도 가능합니다.