스코프는 변수명, 함수명, 클래스명 등의 식별자를 참조할 수 있는 유효 범위를 뜻합니다. 스코프는 전역 스코프와 함수(지역) 스코프로 구분할 수 있고, 대부분의 C 기반 언어들은 블록 스코프를 따르지만, 자바스크립트는 함수 스코프를 따릅니다. ES6 부터 도입된 let, const 키워드를 사용하면 블록 레벨 스코프를 사용할 수 있습니다. 자바스크립트는 다른 C 기반 언어와 다르게 시작점(Entry Point)이 없어 전역 변수를 남발하는 문제가 발생할 수 있는데, 변수 이름이 중복되어 의도치 않은 재할당이 될 수 있기 때문에 전역 변수 사용을 지양해야 합니다.
var 키워드는 함수 스코프를 따르며 재할당과 재선언이 가능합니다.
let과 const 키워드는 블록 스코프를 따르고. let은 재할당은 가능하지만, 재선언시 해당 변수는 이미 선언되었다는 에러 메시지를 볼 수 있습니다. const는 재할당 및 재선언 모두 불가능합니다.