js의 기본 내용부터 클로저에 대한 내용까지 다룬 내용
기본 틀 내에서 크게 벗어나지 않은 책으로 크게 특별히 와닿았던 내용들은 있지 않았다
js언어는 컴파일 언어?
js언어를 스크립트 언어라고 알고 있었는데
글쓴이가 js는 컴파일 언어이고 이를 풀어내는 과정이 인상깊었다
v8엔진은 엔진 자체적으로 jit(just in time)컴파일러를 사용하여 컴파일 해두고
자체적으로 연산이 오래걸릴 것 같은 부분들은 hardware의 turbofan 부분으로 보내버린다
내가 알고 있던 javascript === 스크립트 언어라는 건 v8엔진 이전의 동작 방식에서 유래된 것 같다라고 스스로 판단했다
실제로 v8엔진 등장 이전에는 브라우저에 내장된 js interpreter로 실행이 되었고 한줄 한줄 읽어서 실행이 되어서 실행 속도등이 느렸다고 이번기회에 찾아봤다
import 키워드를 사용하면 어떻게 될까?
이전에 회사에서 스스로 의문점을 가지고 있었는데 오랫동안 해소하지 않았었다
프로그램 내에서 Import 키워드를 사용하면 처음 모듈을 가져온 순간에 인스턴스가 생성된다
이후 다시 같은 import를 다른곳에서 호출하면 이전에 생성되었던 인스턴스를 가져와 사용한다. 결국 싱글턴
스코프와 멋진 친구들
엔진: 컴파일을 시작부터 끝까지 책임지고 JS로 만든 프로그램을 실행함
컴파일러: 엔진의 친구로, 파싱과 코드 생성 과정에서 일어나는 모든 잡일을 담당함
스코프 매니저: 엔진의 또 다른 친구, js 런타임에서 스코프를 확정 지을때 보조해주는 역할
보통 컴파일 과정에 메타 정보들에 대한 것들은 결정이 됨 but. 런타임에 기존 스코프에 개입을 하거나 다른 스코프에 선언되고 실행되는 경우가 있을 수 있다 (like. 전역변수에 변수 넣어버리는 라이브러리들) 이런 경우 엔진은 스코프 매니저에게 물어봐서 알맞은 스코프 내에서 참조하여 사용할 수 있게 해줌
대망의 클로저
객체는 클로저를 가질 수 있다 (x)
클래스는 클로저를 가질 수 있다 (x)
클로저는 함수만 가질 수 있다 (0)
⇒ 리액트 함수형 컴포넌트에서 훅을 사용하고, 이 훅은 클로저를 활용할 수 있는 이유
책에 기록된 클로저의 정의
- 반드시 함수와 관련되어야 합니다
- 외부 스코프의 변수를 적어도 하나 이상 참조해야 합니다
- 참조하려는 변수가 있는 스코프 체인의 다른 분기에서 함수를 호출해야 합니다
책에서 클로저를 활용에서 보여준 예시들
⇒ 성능 측면, 메모리 측면과 캡슐화 측면에서 클로저를 활용하는 모습들을 보여주었다
메모리 측면은 미미할 수 도 있지만 (가비지 컬렉터들의 잘 동작하는 이슈들)
DOM 요소에 직접 접근하는건 비용이 비싸므로 이를 수행하지 않기 위해 클로저를 활용하는 것등은 인상깊게 다가왔다
'책' 카테고리의 다른 글
객체지향의 사실과 오해 (0) | 2024.05.05 |
---|---|
앞서가는 조직은 왜 관계에 충실한가 (0) | 2024.05.05 |
HighOutput Management (0) | 2024.03.31 |
데이터는 예측하지 않는다 (0) | 2024.03.31 |
나를 소모하지 않는 현명한 태도에 관하여 (1) | 2024.03.31 |