자바스크립트 스코프(scope)

김민우·2022년 12월 12일
0

스파르타 내배캠4기

목록 보기
36/73

🔷현재 실행되는 컨텍스트를 말한다. 여기서 컨텍스트는 값과 표현식이 표현되거나 참조 될 수 있음을 의미한다. 만약 변수 또는 다른 표현식이 "해당 스코프"내에 있지 않다면 사용할 수 없다. 스코프는 또한 계층적인 구조를 가지기 때문에 하위 스코프는 상위 스코프에 접근할 수 있지만 반대는 불가하다.

👉 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있고 함수 몸체 외부에서는 참조할 수 없다. 이것은 매개변수를 참조할 수 있는 유호범위, 즉 매개변수의 스코프가 함수 몸체 내부로 한정되기 때문이다.

예제

function add(x,y) {
	console.log(x,y);
    return x+y;
}
add(2,5);
//매개변수는 함수 몸체 내부에서만 참조할 수 있다.
console.log(x,y);  //Reference1: x is not defined

🔷 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. 즉 스코프는 식별자가 유효한 범위를 말한다.

예제

var x = 'global';  //어디서는 호출 가능
function foo () {
	var x = 'local';  //이 함수 내에서만 호출 가능
    console.log(x);}
foo();
console.log(x);

🔷 코드의 가장 바깥 영역과 foo함수 내부에 같은 이름을 같는 X변수를 선언했고 ⑴과⑵에서 X변수를 참조한다. 이때 자바스크립트 엔진은 식별자 결정을 한다.

🔷 위 예제에서 코드의 가장 바깥 영역의 선언된 X변수는 어디서는 참조할 수 있다. 하지만 foo함수 내부에서 선언된 X변수는 foo함수 내부에서만 참조할 수 있고 foo함수 외부에서는 참조할 수 없다.

profile
개발자로서 한걸음

0개의 댓글