Posts You don't know JS Yet - 4장 더 큰 그림
Post
Cancel

You don't know JS Yet - 4장 더 큰 그림

4.1 첫 번째 기둥: 스코프와 클로저

렉시컬 스코프 모델 : 스코프의 기준과 그 경계, 경계 안에서 변수가 어떻게 구성되는지 프로그램을 파싱할때 결정되는 모델. (= 개발자가 스코프를 어디에 배치하냐에 따라 달라지는 모델)

JS는 렉시컬 스코프 모델을 채택하고 있지만, 여타 언어와 다른 두 가지 특징을 더 갖는다

  • 호이스팅
  • var 로 선언한 변수는 블록이 아닌 함수 기준으로 스코프가 만들어진다는 점

이 두가지 특징이 있지만 JS는 렉시컬 스코프 모델을 사용한다고 할수 있다. 클로저 또한 JS가 함수를 일급객체로 다루는 렉시컬 스코프 모델이기에 자연스레 나온 결과이다.

4.2 두 번째 기둥: 프로토타입

JS는 클래스를 통해 사전에 구조를 정의하지 않아도 직접적이고 명시적으로 객체를 만들 수 있는 몇 안되는 언어 중 하나이다.

프로토타입을 사용해 프로토타입 상속이라 불리는 클래스 디자인 패턴을 사용하던 것과 달리, ES6에서는 class 키워드를 통한 JS를 객체지향/클래스 스타일로 개발하자는 움직임이 생겼다.

하지만 프로토타입을 사용하면 this 컨텍스트가 공유되면서 두 객체를 아주 간편하게 연결할 수 있고, 함수나 메서드가 실행되는 동안 두 객체를 동적으로 협력하게 할 수 있다. 이렇게 클래스 없이 프로토타입 체인으로 객체가 협력하게 하는 방식을 작동 위임(behavior delegation)이라고 한다

이렇게 클래스를 사용하지 않고도 객체만으로도 강력한 패턴을 만들 수 있다.

4.3 세 번째 기둥: 타입과 타입 강제 변환

최근에는 타입스크립트와 같은 정적 타입 개발을 많이 하지만, JS 에서의 타입과 타입 변환이 어떻게 이뤄지는지도 알아야한다. JS의 본질을 잘 따른다면 정적 타입 도구 없이도 목표한 바를 이룰 수 있다. (자세한 내용은 YDKJSY 4권을 참조하라고 되어있음)

4.4 JS의 본질 따르기

이 책 YDKJSY 은 일반적으로 널린 알려진 방식과는 다른 방식을 주장한다. 하지만 이 책에는 명세서를 토대로 가능한 한 사실인 정보를 담았다. 따라서 사실인 정보는 그대로 받아들이되, 필자의 의견인 내용은 잘 생각하고 자신만의 결론에 도달해야한다.

다만 JS의 본질은 따라야한다. 언어 차원에서 JS가 어떻게 돌아가는지 이해해야 잘 동작하는 부분이 있기 때문이다. 따라서 먼저 JS 고유의 방식을 배우고 습득해야한다. JS에는 이미 성공한 수많은 패턴과 관용구가 있는데 이를 따르는 것이 최선이다.

물론 이 책을 읽고 프로젝트를 한번에 바꾸려고는 하지마라. 팀원들과 공감대를 형성하고 조금씩 바꿔야한다.

마지막으로 JS를 학습할때는 가독성 향상에 도움을 주는 방식이 있는지 항상 탐구하라.

This post is licensed under CC BY 4.0 by the author.

You don't know JS Yet - 3장 자바스크립트 뿌리 파헤치기

-

Comments powered by Disqus.