TIL

23/10/30 TIL _ 스코프 체이닝과 클로저 그리고 이벤트 루프

GABOJOK 2023. 10. 30. 17:37

 

 

 

실행컨텍스트에 대한 부분이 잘 이해가 가지 않았는데, 

오히려 다른 것들을 넓게 보니까 이해가 되는 것 같아 같이 정리한다. 

 

 

 

🔮  스코프 체이닝

 

  • 식별자를 결정하기 위해 하는 과정이다.
  • 현재 실행컨텍스트와, 상위 컨텍스트를 이어주는 Outer Enviroment 를 참고해 실행컨텍스트 위에서 부터 읽어가며 해당 값을 찾는다
  • 식별자를 결정할 때에 활용하는 스코프들의 연결 리스트스코프 체인 이라고 하며,
  • 실행 컨텍스트의 외부환경참조( Outer Enviroment Referenc ) 와 관련되어 있다. (상위 Lexical Environment 를 참조한다)
  • 이 스코프는 안에서 밖을 참조하는 것은 가능하나, 밖에서 안을 참조하는 건 불가하다. 

 

 

 

🔮  클로저 

 

  • 이미 호출되고 사라진 애한테 접근하는 걸 말한다. 
  • 즉 자신이 선언될 당시의 환경을 기억한다.

 

function sum(a){
	return function add(b){
    	return a+b;
    }
}

//호출과 동시에 sum 함수가 call stack에 들어간다.
const pluse = sum(2);

//실행된 sum 함수는 사라지고, pluse 함수는 이미 사라진 sum 함수의 인자를 참조한다. 
console.log(pluse(7));

 

 

 

 

이번엔 이벤트 루프에 대해 살펴보자. 생각보다 그림으로 보면 간단하다.

 

🔮  이벤트 루프

 

여기서 색깔 박스들이 실행 컨텍스트이다.

자바스크립트 에서 비동기 작업을 처리하고 실행 순서를 관리하는 매커니즘을 이벤트 루프라고 하는데,

그림으로 표현하면 아래와 같다.

 

 

 

 

 

확실히 그림으로 정리하고 나니 이해가 훨씬 잘되는 것 같다.

이론적인 부분을 알고 코딩하게 되면 훨씬 더 좋은 코드를 만들 수 있을 것 같아서 어렵더라도 꾸준히 봐야겠다.