모던 자바스크립트 Deep Dive - 13장 스코프

어제보다·2024년 7월 9일
post-thumbnail

스코프.

  • 변수나 함수가 어디에서 접근 가능하고 사용할 수 있는지를 결정하는 규칙. 식별자가 유효한 범위.
var x = 'global';
function foo(){
  var x = 'local';
  console.log(x); 
}
foo();
console.log(x);

위 코드를 보면 x라는 이름으로 두개의 변수를 선언했다. 자바스크립트 엔진은 이러한 상황에서 스코프를 기준으로 어떤 변수를 참조할지 결정한다. 이것을 식별자 결정이라고 한다. 스코프가 없다면 같은 이름을 갖는 변수들은 서로 충돌을 일으키므로 전체에서 하나밖에 사용할 수 없었을 것이다. 우리가 사용하는 컴퓨터를 보면 같은 이름을 갖는 파일이 여러개 존재할 수 있다. 하지만 같은 디렉토리(폴더) 안에는 같은 이름의 파일이 있으면 안 된다. 비슷한 개념이다.

스코프의 종류

  • 전역 스코프
  • 지역 스코프

    우선 지역이란, 함수 몸체 내부를 말한다. 지역은 지역 스코프를 만든다. 지역에서 변수를 선언하면 지역 스코프를 갖는 지역 변수가 된다. 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다. 전역이란 코드의 가장 바깥 영역을 말한다. 전역 변수는 어디서든 참조할 수 있다.

스코프 체인

  • 스코프 체인은 자바스크립트의 렉시컬 스코핑 규칙에 따라 변수와 함수의 유효 범위를 결정짓는 메커니즘이다. 이를 통해 자바스크립트 엔진은 어떤 변수를 참조해야 하는지를 결정한다. 스코프 체인은 여러 개의 스코프가 계층적으로 연결된 구조를 형성하여, 특정 변수를 찾을 때 이 체인을 따라가며 검색한다.

스코프 체인에 의한 변수 검색

  • 자바스크립트 엔진은 변수를 참조하는 코드의 스코프에서 시작해서 상위 스코프 방향으로 이동하며 선언된 변수를 검색한다. 절대 하위 스코프로 내려가면서 식별자를 검색하는 일은 없다.

렉시컬 스코프

  • 함수를 어디서 정의했는지에 따라 함수의 상위 스코프를 결정하는 방식.
profile
똑똑해지는중...

0개의 댓글