자바스크립트 var & let 차이
- 전역 스코프는 함수 외부에 정의하는 것으로 코드 어디에서든지 참조할 수 있다.
- 지역 스코프는 함수 내에 정의하는 것으로 정의된 함수 내에서만 참조할 수 있다.
- 이 개념은 다른 프로그래밍 언어에서도 적용된다.
- 대부분의 언어는
Block-level scope
를 사용하지만
- 자바스크립트는
Function-level scope
도 사용한다.
const & let

function foo() {
if(true) {
let a = 0;
console.log(a);
}
console.log(a);
}
foo();
0
ReferenceError: Can't find variable: a
- 자바스크립트에서 변수를
let
으로 선언하면 위와같이 첫번쨰 console.log(a)
는 0을 출력하지만 foo()
함수 외부에 있는 두번째 console.log(a)
는 작동되지 않는다.
const
let
은 블록 레벨 스코프 변수이기 때문.
const
도 let
과 같이 블록 레벨 스코프 변수.
var

function foo() {
if(true) {
var a = 0;
console.log(a);
}
console.log(a);
}
foo();
0
0
- 자바스크립트에서 변수를
var
로 선언하면 if
문 안에서 선언했지만 같은 함수 어디에서든 사용 가능하다.
- 따라서
if
문 외부에서도 사용 가능하다 (foo()
함수 내부 한정).
var
은 함수 레벨 스코프 변수이기 때문.