var vs let 차이

chanykim·2021년 7월 23일
0

var일 때

a = 1;
console.log(a);
var = a;

값이 1로 나온다.

let일 때

a = 1;
console.log(a);
let = a;

에러가 뜬다. 그리고 에러가 뜨는게 맞다. 처음에 var를 쓸 때 어이가 없었는데 선언을 밑에 했는데 값이 나온다는게 참 이상했었다.

왜 var는 에러가 안나고 let은 날까?
let은 ES6에서 추가되었는데 var처럼 hoisting되지 않는 것이 특징이다.
hoisting이란 어디에 선언했는가와는 상관없이 항상 제일 위로 선언을 끌어올려주는 것을 말한다.
그래서 var은 이러한 hoisting특징이 있기 때문에 에러가 안나는 것이다.
그리고 var보다는 let을 사용하는 것은 권장한다.
위와 같은 문제 때문도 있지만 var는 블록 scope이 없다.
예를 들어 globalscope같은 것이 무의미해진다.

{
  var a;
  a = 1;
}
console.log(a);

를 찍어보면 원래 우리가 알고 있는 상식이라면 undefined가 나와야하지만 var는 그딴거 무시하고 블럭안에 있던 값을 나타내게 된다.

profile
오늘보다 더 나은 내일

0개의 댓글