Q. 실행 컨텍스트 란(execute context)?
JS에서 실행 컨텍스트는 엄청 중요하다는데 비전공자로 막 깨지면서 코딩을 해와서 사실 잘 느낌은 안온다.
뭐 중요하다니까 알아보자.
1. Execute Context 란?
=> 자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념
우리가 코드를 작성하고 실행한다면 실행 컨텍스트 내부에서 실행되고 있는 것. 즉, 코드들이 실행되기 위한 환경이자 하나의 박스 컨테이너라 볼 수 있음!
2. 자바스크립트 코드 실행에 필요한 정보
1) 변수 (전역 변수, 지역 변수, 매개 변수, 객체의 프로퍼티)
2) 함수 선언
3) 변수의 유효범위
4) this
3. 실행 컨텍스트 종류
1) Global Execute Context
=> 기본 실행 컨텍스트로 global object를 생성하며 this를 global object로 설정함. JS 에서 global object는 우리가 많이 사용하는 window 객체이다. (전역 컨텍스트는 Call Stack에 가장 먼저 추가되며 앱이 종료 될 때 삭제됨)
여기엔 엄~청 복잡하고 많은 함수들이 많아서 여기다 변수를 선언하는 변수를 쓰지않고 선언 & var를 통한 선언은 안 하는게좋음.
2) Functional Execute Context
함수가 실행 될 때 마다 정의되는 context이다. 실행시마다 정의되며 함수 실행이 종료(return) 되면 call stack 에서 제거됨.
3) Eval Functional Execute Context
보안상의 문제로 eval은 잘 사용되지 않아서 이름만 알고 넘어가자.
4. Execution Stack
=> 다른 프로그래밍 언어의 호출 스택(call stack)이랑 동일. 스택은 LIFO(Last in, First out) 구조 형태.
JS 엔진은 script 요소를 처음 만날 때 [global execution context]를 생성하고 [execution stack]에 push 한다.
그리고 엔진이 함수 호출을 찾을 때 마다 해당 함수에 대한 새로운 실행 컨텍스트를 생성해 [execution stack]의 맨 위로 push 한다.
JS 엔진은 실행 컨텍스트가 스택 맨 위에 있는 함수를 실행한 뒤 함수가 종료되면 스택에서 제거하고 호출 스택은 최신화 된 스택에서 맨 위의 컨텍스트를 이전과 동일한 로직으로 접근함.
5. Execution context 생성 로직
위의 과정은 자바스크립트 엔진에서 어떻게 실행 컨텍스트를 관리하고 동작하는지였다.
이번에는 자바스크립트 엔진이 실행 컨텍스트를 만드는 과정임!
2 단계로 Creation Phase, Execution Phase 과정을 거친다- 는 다음 시간에...
똑딱 코드 쳐서 실행시키기만 했지 1도 몰랐었네 안에서 갱장한 과정을 거치고 있었구낭ㅎㅎ
간만에 독서좀 하려고(개발 관련 외의 글자를 읽고 싶어서) 동생 방에서 몇권 훔쳐왔다. 그 중에 만만한 얇은 책을 며칠 읽었는데 제목은 '나는 내가 싫고 좋고 이상하고' 산문이고, 대충 중간쯤부터 읽었는데 내용이 산만하고 여러 주제를 산발적으로 쏘아대서 오히려 잘 읽혔다(?) 뇌를 비우고 읽다가 그래도 내용이 그렇게 흥미롭진 않은뎅 하면서 1페이지부터 잠깐 읽어봤는데 같은 작가가 맞나 싶을정도로 주제도 통일화되고 내용에 깊이가 있었다. 여성 차별에 대한 내용이었는데 한창 문단 내 성범죄가 SNS을 통해 드러날 무렵 저자도 함께 용기를 내어 글을 적었고 사실이었을 일들이 적나라했고 충격적이었고 그동안 내가 너무 모르고 살았구나 느끼고 반성했다. 읽으면서 계속 든 생각인데 작가가 이렇게해도 되나 싶을 정도로 솔직하다. 본인의 어렸을 때 가정폭력 당한 이야기, 강간을 당할 뻔 한 이야기, 성폭행 당한, 가스라이팅 당한, 이혼에 관한, 우울증에 관한, 스무살이 되기까지 사람을 잔인하게 죽이는 글을 쓰며 즐거워한 내용이 서술된다. 연민을 바라지 않는 볼테면 봐라는 문체는 더욱 와 닿았고 여성으로 살아간다는게 너무너무너무 힘들구나 생각됐다. 조금더 귀 기울이고 미약하게나마 내 주변 지인들에게라도 더 잘해야겠다는 생각도.
'WIL & TIL' 카테고리의 다른 글
22/11월 TIL(Q. DOM & useRef & useEffect 란?) (0) | 2022.11.15 |
---|---|
22/11월 TIL(Q. Scope란?) (0) | 2022.11.14 |
22/11월 TIL(Q. Virtual DOM이란?) (0) | 2022.11.10 |
22/11월 TIL(Q. '변수 생성 3단계' & '호이스팅'이란?) (2) | 2022.11.08 |
22/10월 TIL (0) | 2022.10.30 |