var에 관한 이야기

es5 이전에는 var이 변수를 선언하는 유일한 방법이었습니다. 하지만 es6에서 let과 const가 등장하여 var은 잘 사용하지 않게 되었습니다. 어떤 이유로 var이 let과 const로 대체되었는지, var의 문제점(단점)에 대해 설명해보겠습니다.

var의 문제점 1. 변수 중복 선언이 가능하다

var A = 'brother';
var A = 'sister';

console.log(A);	// sister 출력

위 코드와 같이 var은 중복 선언이 가능합니다.

var의 문제점 2. 함수 레벨 스코프를 가진다

var A = 'brother';

if(true) {
  var A = 'sister';
}

console.log(A);	// sister 출력

위 코드와 같이 var은 블록 레벨 스코프가 아닌, 함수 레벨 스코프를 가집니다. 만약 블록 레벨 스코프를 가졌다면 위 코드에서는 brother가 출력되어야합니다.

var의 문제점 3. 변수 호이스팅이 발생할 때 변수가 undefined로 초기화된다.

var A;

console.log(A);	// undefined 출력
console.log(B);	// undefined 출력

var B = 'brother';

위 코드와 같이 var 변수가 호이스팅이 발생하면 변수가 undefined로 초기화됩니다. 위 코드에서 A의 경우 값이 할당되지 않은 변수를 출력하도록 했으므로 undefined가 출력됩니다. B의 경우 호이스팅에 의해 초기화된 변수를 출력하도록 했으므로 undefined가 출력됩니다.

let과 const에 관한 이야기

이번에는 let과 const에 대해 이야기해보도록 하겠습니다. 위의 var과 어떤점이 다른지, 또 let과 const는 어떤점이 다른지에 대해서 설명해보겠습니다.

var과의 차이 1. 변수 중복 선언이 불가하다

let A = 10;
let A = 20;	// error 발생