실행컨텍스트 - 클로저, 스코프

bella·2022년 3월 19일
0

처음 코드를 실행(브라우저가 스크립트를 로딩해서 실행하는 것)하는 순간 모든 것을 포함하는 전역 컨텍스트가 생긴다.
전역 컨텍스트는 모든 것을 관리하는 환경으로, 페이지가 종료될 때까지 유지된다.


컨텍스트의 원칙

  • 전역 컨텍스트 하나 생성 후, 함수를 호출할 때마다 함수 컨텍스트가 생긴다.
  • 컨텍스트 생성 시 컨텍스트 안에 변수객체(arguments, variable), scope chain, this가 생성된다.
  • 컨텍스트 생성 후 함수가 실행되면서 사용되는 변수들은 변수 객체 안에서 값을 찾고, 없다면 스코프 체인을 따라 올라가며 찾는다.
  • 함수 실행이 마무리되면 해당 컨텍스트는 사라진다. (클로저 제외)
  • 페이지가 종료되면 전역 컨텍스트가 사라진다.

클로저

  • 함수를 선언할 때 만들어진 scope가 사라진 후에도 scope에 저장되었던 변수를 사용할 수 있는 함수
    -> 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우, A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상

  • 클로저를 통한 은닉화
    -> 클로저를 사용하여 외부에서 변수에 직접 접근하는 것을 제한할 때 사용한다.


스코프

  • 변수가 유효한(살아있는) 범위

  • Global Scope
    - 코드 어디에서든지 참조 가능
    - var로 선언한 변수는 전역 객체에 속하게 된다.

  • Local Scope
    - scope의 범위는 함수 블록 내이다. ({} 블록과 상관이 없다) = 함수에 의해서만 scope가 생성된다.
    - let, const로 변수를 선언할 때의 scope의 범위는 블록({}) 단위이다.

  • 스코프 체인
    - 변수가 해당 scope에서 유효하지 않을 때, 안에서부터 바깥으로만 차례로 검색해 나가는 것

profile
기록하며 공부하기

0개의 댓글