: 변수에 접근할 수 있는 범위
: 중괄호로 둘러싼 범위
: 블록 스코프 안에서 정의된 변수는 블록 범위를 벗어나는 즉시 접근할 수 없음 (ReferenceError)
: 함수로 둘러싼 범위
단, 화살표 함수로 둘러싼 범위는 블록 스코프로 취급
: 변수를 정의하는 또 다른 키워드
: var 키워드는 블록 스코프를 무시하고, 함수 스코프만 따름(이전방식)
모든 블록 스코프를 무시하는건 아님(화살표 함수의 블록 스코프는 무시하지 않음)
: 블록 단위로 스코프를 구분했을때, 훨씬 더 예측 가능한 코드를 작성할 수 있도록 let 키워드 사용을 권장
: var를 사용하지 않는다 해도, 함수 스코프는 let으로 선언된 변수의 접근 범위를 제한함
var 키워드보다 let 키워드가 더 안전한 이유
: var 키워드는 재선언을 해도 아무런 에러도 내지 않지만, let 키워드는 재선언을 방지함
: 값이 변하지 않는 상수를 정의할 때 쓰는 키워드
: let과 동일하게 블록 스코프를 따름
: 값의 변경을 최소화하여 보다 안전한 프로그램을 만들 수 있음.
값을 새롭게 할당할 일이 없다면, const 키워드의 사용을 권장
: 값을 재할당 할 경우, TypeError를 냄
: 브라우저에는 window라는 객체가 존재
: 전역 변수: 어디서든 접근 가능한 변수
: 편리한 대신, 다른 함수 혹은 로직에 의해 의도되지 않은 변경이 발생할 수 있음
: 같은 스코프에서 동일한 이름의 변수를 재선언 하는 것은 버그를 유발
: var로 선언한 전역변수가 window 기능을 덮어씌워서 내장 기능을 사용할 수 없게 만들 수 있음
: 선언 없이 변수를 할당하면, 해당 변수는 var로 선언한 전역 변수처럼 취급됨
: 브라우저가 보다 엄격하게 작동하도록 만들어줌
선언 없는 변수 할당의 경우도 에러로 판단해줌