🔷현재 실행되는 컨텍스트를 말한다. 여기서 컨텍스트는 값과 표현식이 표현되거나 참조 될 수 있음을 의미한다. 만약 변수 또는 다른 표현식이 "해당 스코프"내에 있지 않다면 사용할 수 없다. 스코프는 또한 계층적인 구조를 가지기 때문에 하위 스코프는 상위 스코프에 접근할 수 있지만 반대는 불가하다.
👉 함수의 매개변수는 함수 몸체 내부에서만 참조할 수 있고 함수 몸체 외부에서는 참조할 수 없다. 이것은 매개변수를 참조할 수 있는 유호범위, 즉 매개변수의 스코프가 함수 몸체 내부로 한정되기 때문이다.
예제
function add(x,y) {
console.log(x,y);
return x+y;
}
add(2,5);
console.log(x,y);
🔷 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. 즉 스코프는 식별자가 유효한 범위를 말한다.
예제
var x = 'global';
function foo () {
var x = 'local';
console.log(x); ⑴
}
foo();
console.log(x); ⑵
🔷 코드의 가장 바깥 영역과 foo함수 내부에 같은 이름을 같는 X변수를 선언했고 ⑴과⑵에서 X변수를 참조한다. 이때 자바스크립트 엔진은 식별자 결정을 한다.
🔷 위 예제에서 코드의 가장 바깥 영역의 선언된 X변수는 어디서는 참조할 수 있다. 하지만 foo함수 내부에서 선언된 X변수는 foo함수 내부에서만 참조할 수 있고 foo함수 외부에서는 참조할 수 없다.