
var x = 'global';
function foo(){
var x = 'local';
console.log(x);
}
foo();
console.log(x);
위 코드를 보면 x라는 이름으로 두개의 변수를 선언했다. 자바스크립트 엔진은 이러한 상황에서 스코프를 기준으로 어떤 변수를 참조할지 결정한다. 이것을 식별자 결정이라고 한다. 스코프가 없다면 같은 이름을 갖는 변수들은 서로 충돌을 일으키므로 전체에서 하나밖에 사용할 수 없었을 것이다. 우리가 사용하는 컴퓨터를 보면 같은 이름을 갖는 파일이 여러개 존재할 수 있다. 하지만 같은 디렉토리(폴더) 안에는 같은 이름의 파일이 있으면 안 된다. 비슷한 개념이다.
우선 지역이란, 함수 몸체 내부를 말한다. 지역은 지역 스코프를 만든다. 지역에서 변수를 선언하면 지역 스코프를 갖는 지역 변수가 된다. 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다. 전역이란 코드의 가장 바깥 영역을 말한다. 전역 변수는 어디서든 참조할 수 있다.