티스토리 뷰

Oops, All Code!/📝 Study Notes

[JS] 스코프란?

밍동망동 2023. 1. 8. 02:45
1. 스코프 (scope)

function plus(x, y){
  console.log(x, y);
  return x + y;
}

console.log(x, y); // ReferenceError

스코프는 매개변수를 참조할 수 있는 유효범위이다.

식별자는 자신이 선언된 위치에 의해

다른 코드가 식별자를 참조할 수 있는

유효한 범위, 참조 가능 범위가 결정된다.

변수 이름, 함수 이름, 클래스 이름 등

 

function temp(){
  var a = 3;
}

console.log(a); // ReferenceError

식별자가 유효한 범위이기도 하다.

따라서 식별자를 검색할 때 사용하는 규칙이라고 생각할 수도 있다.

 

[JS] 스코프 체인

1. 정의 스코프는 함수의 중첩에 의해 계층적 구조를 갖는다. 다시 말해 중첩 함수의 지역 스코프는 중첩 함수를 갖는 외부 함수의 지역 스코프와 계층적 구조를 갖는다. 이때 외부 함수의 지역

404minda.tistory.com

함수 검색 참조


실행 컨텍스트와 관련이 깊기 때문에

현재 실행되는 컨텍스트라고 판단할 수도 있다.

 

컨텍스트는 값과 표현식이 참조될 수 있음을 의미하며

해당 스코프 내에 있지 않다면 참조 불가하다.

 

계층적인 구조를 갖기 때문에

하위 스코프는 상위 스코프에 접근 가능하다.

 

2. 필요성

식별자는 값을 구별하므로 유일해야한다.

하나의 값은 유일한 식별자에 연결되어야한다.

 

만약

스코프가 존재하지 않는다면

같은 이름을 갖는 변수가 충돌을 일으키기 때문에

프로그램에서 한 번 밖에 사용할 수 없다.

 

다시 말해, 

좋은 이름을 한 번 밖에 사용하지 못한다.

 

즉 스코프는 네임 스페이스 역할을 하며

이는 하나의 폴더 안에

동일한 파일 이름이 존재할 수 없는 것과 동일하다.

3. 종류

전역지역으로 구분된다.

 

자신이 선언된 위치에 의해

유효 범위가 정해지므로

전역에서 선언했으면 전역 스코프

지역에서 선언했다면 지역 스코프다.

 

전역은 코드의 가장 바깥 영역이다. 

전역은 전역 스코프(global scope)를 만든다.

전역 스코프를 갖는 변수전역 변수(global variable)이 되며

어디서든지 참조 가능하다.

 

지역은 함수 몸체 내부다.

지역 스코프(local scope)를 만들며 지역 변수(local variable)이 된다.

자신이 선언된 지역중첩 함수(하위 지역)에서만 사용 가능하다.

자신의 지역 스코프와 중첩된 하위 스코프에서만 유효

 

자바스크립트 엔진이 스코프 체인을 통해 변수를 검색하는 방식으로 작동한다.

댓글