기존 블로그에 작성한 내용을 velog로 이전한 글입니다
스코프란?
다른 코드가 변수를 참조할 수 있는 유효 범위이다.
전역 스코프
전역 변수는 전역 스코프를 가지고 있으며, 어디서든지 참조할 수 있다.
지역 스코프
지역 변수는 자신이 선언된 지역 스코프와 하위 지역 스코프에서 유효하다.
변수가 선언 됐는지 확인하기 위해서 변수를 찾을 때 상위 스코프를 따라가며 변수를 찾는다.
하위 스코프 방향으론 찾지 않는다.
ES5의 경우 함수에 의해서만 지역 스코프가 생겼다.
따라서 var로 선언된 변수의 경우 함수의 코드 블록 만을 지역 스코프로 인정한다.
이러한 특성을 함수 레벨 스코프라고 한다.
ES6에서 지원하는 let과 const를 사용하면 블록 레벨 스코프를 적용할 수 있다.
동적 스코프: 함수가 호출되는 시점에 동적으로 상위 스코프를 결정
렉시컬(정적) 스코프 : 함수가 평가되는 시점에 상위 스코프가 정적으로 결정
자바스크립트는 함수를 정의한 위치에 따라 상위 스코프를 결정한다.
따라서 렉시컬 스코프를 따른다.