실행 컨텍스트와 클로저

Vegonia·2021년 6월 7일
0

실행 컨텍스트

콜스택 이란? 함수를 호출할때 해당 함수의 호출정보가 차곡차곡 쌓여있는 스택
따라서, 콜 스택의 호출 정보 등으로 코드의 실행과정을 추적한다
실행 컨텍스트란? "실행 가능한 자바스크립트 코드 블록이 실행되는 환경" 보통 함수가 된다
언제 형성되는가?? 전역코드, 함수안의 코드
코드 블록안에는 변수, 객체, 실행 가능한 코드가 들어있다
제일 위에 위치하는 컨텍스트가 현재 실행되고 있는 컨텍스트이다

전역실행컨텍스트(가장 먼저 실행되는 컨텍스트)
함수호출이 있어지면 컨텍스트가 만들어지고 실행되며, 종료되면 반환된다

  • 실행컨텍스트 생성 과정
    활성 객체(전역객체) 생성
    무엇인가? 실행에 필요한 여러가지 정보를 담을 객체
    안에 변수, 객체를 저장한다
    -> arguments 객체 생성
    -> 스코프 정보 생성(현재 컨텍스트의 유효범위)
    특정 변수에 접근할 경우 이 리스트를 활용한다!
    [[scope]]프로퍼티로 참조되며 스코프체인이 발동된다!!(클로저★)
    -> 현재 실행컨텍스트에서 사용되는 지역변수가 생성됨
    !! 만약 값이 넘겨지지않으면 undefined가 할당된다
    -> this 바인딩
    참조하는 객체가 없으면 전역객체를 참조한다
    -> 코드실행
    이때 변수의 초기화 및 연산, 변수에 할당이된다(표현식)

  • 스코프체인

    각 함수 객체가 처음 생성될때 [[scope]]는 앞에 새롭게 만들어진 변수 객체가 추가된다
    !! 내부함수일경우 참조할수있다 [[scope]]가 남아있어서!^^
    즉 이함수가 클로저함수가된다

자, 그럼 호이스팅은 할당되기전에 실행했기때문에 호이스팅이 일어나게된다
함수 선언식은 변수 선언단계에 바로 할당이 된다!

  • 렉시컬 스코프
    스코프는 함수를 선언할때 생긴다(정적스코프)

클로저

재료들은 위에 많이 설명을 해놨다
실행컨텍스트가 끝난(생명주기가 끝난) 외부 함수의 변수(자유변수)를 참조하는 함수가 클로저이다!

  • 함수의 캡슐화
    익명함수를 즉시 실행시켜 반환되는 함수를 할당한다
    이 함수가 클로저가 되고 자유변수를 스코프 체인에서 참조할 수 있다
profile
For Peace

0개의 댓글