ice rabbit programming

[JS] var, let, const 본문

Development/JavaScript

[JS] var, let, const

판교토끼 2020. 11. 6. 13:09

자바스크립트를 사용하면 var, let, const로 변수를 선언하게 된다. 순수 자바스크립트는 컴파일 타임에 타입을 알 수 없기 때문에, 타입 추론을 통해 런타임에 타입을 정하게 된다. var, let, const 각각의 차이에 대해 간단하게 정리해보았다.

var : ES5 이전까지 쓰이던 변수 키워드. 함수 스코프에서 유효하다. 재선언이 가능하고, 호이스팅도 가능하다.

let(값 변경 가능), const(값 변경 불가) : ES6부터 쓰이는 변수 키워드. 블록({}) 스코프에서 유효하다. 재선언 및 호이스팅이 불가능하다.

즉 간단하게 말하면 var는 예전에 쓰던 것, let과 const는 요즘 쓰는 것인데 스코프(범위)나 재선언은 들으면 바로 감이 올 텐데 호이스팅이라는 개념은 잘 와닿지 않는 분들도 많을 것이다. 본인도 이것을 보면서 처음 본 개념이었다.

호이스팅 : 일단 사용하고, 아래에서 정의하는 것.

C계열 언어를 써온 개발자라면, 잘 이해되지 않는 개념이다. 본인도 C++, C#을 써왔기 때문에 잘 몰랐다. 아래 예제를 보자.

console.log(sayHi);
var sayHi = "호이스팅이 가능합니다."
console.log(sayHello);
let sayHello = "호이스팅이 불가능합니다."

이런 식으로 사용한 이후에 선언하는 것인데, 위 코드를 실행해보면 sayHello는 let이기 때문에 에러가 발생하지만 sayHi는 정상적으로 출력이 된다.

결론적으로 var보다는 let, const를 쓰는 편이 좋다고 하고, 실제로도 많이 사용된다.