변수와 상수의 종류와 특징
var | let | const | |
---|---|---|---|
이름 중복(재선언) | O | X | X |
데이터 수정(재할당) | O | O | X |
자바스크립트에서 변수와 상수는 데이터를 담는 공간(상자)
선언 let(변수명) let name
할당 (변수명) = (데이터) name = “철수”
선언+할당 let (변수명) = (데이터) let name = “철수”
등호는 같다는 의미가 아니라 변수에 데이터를 대입하는 것
var
var는 선언한 변수가 동일한 이름으로 여러 번 중복해서 선언이 가능하다. 이러한 경우에는 마지막에 할당된 값이 변수에 저장된다.
필요할 때마다 변수를 유용하게 사용할 수 있다는 장점이 있지만 기존에 선언해 둔 변수의 존재를 깜빡하고 재할당하는 실수가 발생할 가능성이 크다.
특히 코드량이 많아졌을 때 같은 이름의 변수명이 여러 번 선언되었다면 어디 부분에서 문제가 발생하는지 파악하기 힘들고 값이 바뀔 우려가 있다.
이를 보완하기 위해 ES6부터 추가된 변수 선언 방식이 let과 const이다.
let
중복 선언이 불가능하고 재할당은 가능하다.
var와 다르게 let은 해당 변수가 이미 선언되었다는 에러 메시지가 출력된다. 그렇기 때문에 중복 선언이 불가능하다.
그러나 변수 선언 및 초기화 이후 반복해서 다른 값을 재할당할 수는 있다.
const
중복 선언이 불가능하고 재할당 또한 불가능하다.
let과 const의 차이점은 imutable의 여부이다. let은 다른 값을 재할당할 수 있지만 const는 재할당 시에는 에러 메시지가 출력된다.
const는 상수를 뜻하기 때문에 한 번만 선언이 가능하며 값을 바꿀 수도 없다.
결과적으로 const는 불변을 의미하는 것과 다르게 값을 재할당하는 코드만 불가능하다고 볼 수 있다.
const를 기본으로 사용하여 불필요한 변수의 재사용을 방지하고 재할당이 필요한 경우 let을 사용하는 것이 좋다.