스코프, 렉시컬, 클로저

solsolsol·2022년 7월 14일
0

JavaScript

목록 보기
17/17

스코프

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

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

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

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

    와 같은 현상이 발생한다

렉시컬 환경

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

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

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

로 이루어져 있다.

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

closure

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

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

0개의 댓글