
모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다.
스코프
: 식별자가 유효한 범위 혹은 식별자를 검색할 때 사용하는 규칙

: 스코프가 함수의 중첩에 의해 계층적 구조를 갖는 것 or 스코프가 계층적으로 연결된 것
const x = 10;
const y = 20;
function outer() {
const z = 30;
function inner() {
const x = 15;
console.log(x + y + z);
}
inner();
}
outer(); // 65
console.log(z); // ReferenceError: z is not defined

(※ 참조: 모던 자바스크립트 Deep Dive - 이웅모 저)