특별히 가장 바깥쪽의 스코프는 전역 스코프(Global Scope)라고 부릅니다. 전역의 반대말은 지역(local)으로 전역이 아닌 다른 스코프는 전부 지역 스코프(local scope)입니다.
지역 스코프에 선언한 변수는 지역 변수, 전역 스코프에서 선언한 변수는 전역 변수입니다.
전역변수는 가장 바깥 스코프라서 어디든 접근이 가능하기 때문에 많은 변수를 너무 선언하면 안된다.
너도나도 똑같은 이름으로 전역 변수를 선언하려고 한다면 분명 문제가 발생할 것입니다.
이를 side effect라고 합니다. 전역 변수를 최소화하는 것은 side effect를 줄이는 좋은 방법입니다.
전역 변수를 var로 선언하는 것은 브라우저의 내장 기능을 사용하지 못하게 만들 수도 있습니다.
또한 선언없이 변수를 할당할 경우 var로 선언한 전역 변수처럼 취급된다.
스코프 규칙에서 또 하나 기억해야 할 규칙은, 지역 변수는 전역 변수보다 더 높은 우선순위를 가집니다.
스코프에는 2가지 종류가 있는데 하나는 블록 스코프 하나는 함수 스코프이다.
함수 스코프는 function 키워드가 등장하는 함수 선언식 및 함수 표현식에서 함수 스코프를 만들수 있음.
함수 스코프에서 유의할점은 화살표 함수(=>)는 블록 스코프 취급함.
블록 스코프는 중괄호를 기준으로 범위가 구분됨.
블록스코프에서 var 키워드는 for문이 만들어낸 블록 스코프를 무시함.
변수를 정의하는 방법은 let 외에도 var 키워드를 사용하는 방법이 있습니다.
var 키워드로 정의한 변수는 블록 스코프를 무시하고, 함수 스코프만 따릅니다. 그러나, 모든 블록 스코프를 무시하는 건 아닙니다. 화살표 함수의 블록 스코프는 무시하지 않습니다.
let 키워드는 재선언을 방지합니다.
변하지 않는 값, 곧 상수(constant)를 정의할 때에는 const를 이용합니다.
const는 값의 재할당이 불가능합니다. 값을 재할당할 경우 TypeError를 내므로, 의도하지 않은 값의 변경을 막을 수 있습니다.