자바스크립트를 사용할 때 변수를 선언하기 위해 var를 많이 사용한다. 하지만 var는 많은 단점을 가지고 있기 때문에 사용을 지양하는 것이 좋다. 바로 hoising 같은 개념 때문인데 이와 관련해서는 이전에 포스팅해 놓은 아래 글을 참고 바란다.
https://ckprk.tistory.com/74?category=971162
[javascript] var hoisting
hoisting이란 변수, 함수 선언을 최상단으로 끌어 올린다는 것이다. 즉 런타임시 어떤 변수를 출력하는데 변수선언이 되어있지 않음에도 불구하고 오류가 나지 않는다는 것이다. 예를 들어보자 con
ckprk.tistory.com
자 그럼 var, let, const 를 비교해보자
var name = "Sarah";
console.log(name); //Sarah
var name = "Jim"
console.log(name); //Jim
위 코드를 보면 var를 통해 name이라는 변수이름을 재사용하여 재정의 하고있다. 이렇게 var는 변수를 재정의, 재할당이 모두 가능하다는 특징을 가지고 있다.
let name = "Sarah";
console.log(name);
let name = "Jim"
console.log(name);
//Uncaught SyntaxError: Identifier 'name' has already been declared.
위 코드는 let을 통해 재선언을 하고있는데 주석처리된 에러를 보면 알 수 있듯이 name이라는 변수는 이미 선언이 되어있어서 재선언이 불가능하다
const name = "Sarah";
console.log(name);
const name = "Jim"
console.log(name);
//Uncaught SyntaxError: Identifier 'name' has already been declared.
const를 사용하여 변수선언 할 때도 let과 마찬가지로 재선언이 불가능하다
그러면 var와 const의 차이는 무엇일까?
var는 아래와 같이 재할당이 가능하고 const는 불가능하다는 것이다.
let name = "Sarah";
console.log(name); //Sarah
name = "Jim"
console.log(name); //Jim
const name = "Sarah";
console.log(name); //Sarah
name = "Jim"
console.log(name); //Uncaught TypeError: Assignment to constant variable.
쉽게 말해 let은 다른언어에서와 마찬가지로 일반적인 변수선언에 사용되고 const는 자바에서의 final 상수와 같이 값의 변경이 불가능하다
정리하면,
var : 재선언 가능 / 재할당 가능
let : 재선언 불가능 / 재할당 가능
const : 재선언 불가능 / 재할당 불가능