본문 바로가기
웹 프로그래밍

6주차, var, let, const 차이점과 hoisting

by 호놀롤루 2022. 1. 26.

var, let

js는 es6 문법 도입 전까지 var 키워드만을 이용해서 변수를 선언했다. 그렇기에 코드 실행중

예상치 못한 문제들이 자주 발생했다.

var a = "a"

console.log(a) // "a"

var a = "b"

console.log(a) // "b"

 

같은 변수에 다른 값을 두번 할당했는데도 에러가 나지 않고 멀쩡히 다른 값이 출력된다.

var는 변수의 재선언, 재할당 모두 가능하기 때문에 유연한 변수 선언 면에서는 장점이지만,

코드양이 많아질수록 유지 관리가 힘들어지고 에러를 찾기도 힘들어진다.

 

또한 var는 hoisting과도 연관이 있다.

js에서 hoisting이란 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을

의미한다. var로 선언한 변수의 경우, hoisting시, undefined로 변수를 초기화한다.

let과 const로 선언한 변수의 경우 hoisting시, 변수를 초기화하지 않는다.

 

var(es5 문법)와 let(es6 문법)의 차이는 이렇고, 같은 es6 문법인 let과 const의 차이는

재할당 여부이다.

let은 변수의 재선언은 불가능하지만, 재할당이 가능하다.

 

let bar;

console.log(bar) // undefined

 

const는 재선언, 재할당 모두 불가능하다. 한 번 할당하면 바꿀 수 없기에 변수 선언시 반드시

할당이 이루어져야 한다.

 

const a = 1

a = 2 // typeerror: assignment to constant variable

 

const b // syntaxerror: missing initializer in const declaration

댓글