스코프, 렉시컬, 클로저

solsolsol·2022년 7월 14일

JavaScript

목록 보기
17/17

스코프

변수를 참조할 수 있는 유효한 범위를 말한다. 스코프로 인해

  • 블럭 외부에서는 블럭 내부의 변수를 참조할 수 없음

  • 함수 외부에서는 함수 내부의 변수를 참조할 수 없음

  • 함수 외부에서는 함수의 매개 변수를 참조할 수 없음

    와 같은 현상이 발생한다

렉시컬 환경

렉시컬 환경은 함수, 블록, 스크립트가 가지고 있는 내부 오브젝트이다.

블럭에 대한 정보(프로퍼티)를 담고 있는 환경 레코드(Environment Record) 와

외부 렉시컬 환경(부모)를 참조하고 있는 외부 환경 참조(Outer Lexical Environment Reference)

로 이루어져 있다.

스크립트 전체와 관련된 렉시컬 환경은 전역 렉시컬 환경(global Lexical Environment)이라고 부른다

closure

외부 변수를 기억하고 이 변수에 접근할 수 있는 함수를 말한다. 자바스크립트에서는 모든 함수가 자연스럽게 클로저가 된다.

함수는 숨김 프로퍼티인 [[Environment]] 에 자신이 만들어진 곳의 렉시컬 환경에 대한 참조를 저장한다. 이 프로퍼티는 함수를 호출 했을 때 생성되는 렉시컬 환경이 참조할 수 있는 외부 렉시컬 환경이 될 수 있다. 이렇게 함수는 [[Environment]] 를 사용해 외부 변수에 접근하게 된다.

0개의 댓글