지난 주말에 사 온 책인데, 오늘 1/4 정도 읽은 것 같다. 확실히 초판 발행일이 2012년인 책이라 지금과 조금 다른 점이 있어 감안해야 하지만, 자바스크립트의 구조나 성능에 대한 비교 실험이 있어 흥미롭게 쭉쭉 읽어나갈 수 있었다.
특히 실행문맥과 스코프체인, 활성화 객체와 전역 객체가 어떤 순서로 사용되는 흐름을 알 수 있었는데, 두루뭉술하게 '전역변수보다 지역변수를 사용해라'라고만 알고 있던 걸 좀 더 확실하게 공부한 느낌이다.
- 실행 문맥: 함수가 동작하는 환경을 나타내며, 브라우저 내부에서 사용되는 객체 => 함수가 실행될 때 새로 생성되고, 함수가 종료될 때 소멸되며 함수의 스코프 체인에 대한 참조를 가지고 있게 된다.
- 스코프 체인: 함수를 실행하면서 어떤 속성(변수, 객체 등)에 접근해야 할 때 해당 속성을 효율적으로 탐색하도록 속성을 일정한 객체 단위로 분류하고, 각 객체에 접근하기 위한 객체의 참조를 보관한 장소
- 스코프 체인의 구성요소: 활성화 객체, 전역 객체
전역 객체는 자바스크립트 동작 시 어디서나 항상 접근 가능한 데이터를 포함하고 있어, 웹 페이지 내 자바스크립트가 동작하는 모든 시간 동안 존재하며, 함수 실행 시 함수의 스코프 체인에서 전역 속성을 탐색하는 데 사용됨. 반면 활성화 객체는 전역 객체와 달리 함수가 실행되는 동안에만 존재하며, 함수 내부에서 자주 사용되는 데이터가 모여 있는 만큼 모든 속성을 탐색할 경우 최우선으로 탐색하는 대상 객체가 된다.
때문에 전역변수를 호출하기 위해선 '실행 문맥 > 스코프 체인 > 활성화 객체 > 스코프 체인 > 전역 객체' 순으로 전역 변수의 공간에 먼저 접근하기 때문에 탐색 경로가 길어져 비효율적이다. 때문에 전역변수에 자주 접근하는 것은 성능 저하의 원인이 되고, 전역변수를 지역 변수에 복사하여 값을 저장하는 방식으로 유의미한 최적화가 가능하다.
'TIL' 카테고리의 다른 글
[2024.05.22] 알고리즘 심화반_배열 내부 동작 구현 (0) | 2024.05.22 |
---|---|
[2024.05.21] 챌린지반 복습_React-Router loader (0) | 2024.05.21 |
[2024.05.19] 챌린지반 과제 완성_피카츄의 놀이터 (0) | 2024.05.20 |
[2024.05.18] 2024 스타트라인 + 스터디 오프라인 만남 + 알고리즘_이상한 문자 만들기 + 새로운 개발서적 (1) | 2024.05.18 |
[2024.05.17] 내배캠 React 개인과제 그로스_todolist (0) | 2024.05.17 |