기존의 자바스크립트에서는 var를 이용하여 변수를 선언했었다.
그러나 var로 변수를 선언하는 것은 몇 가지 문제점이 있다.
1. 변수를 덮어 쓸 수 있다.
2. 다시 선언(재선언)할 수 있다.
위 테스트를 보면 알 수 있듯이 한 번 정의한 변수에 다른 값을 대입할 수 있다.
물론 덮어써야 되는 경우도 있지만, 덮어 쓰고 싶지 않을 때도 있을 수 있으므로 무조건 덮어 쓰는 것은 좋지 않다.
또한 완전히 같은 변수명을 여러 위치에서 변수로 정의할 수 있다.
프로그램 실행 순서에 따라 어느 변수가 사용되는지 해석하기 어려우므로 재선언은 기본적으로 안 되는 편이 좋다.
그래서 ES2015(ES6)에서 새로운 변수 선언 방법으로 const와 let이 추가되었다.
let을 이용한 변수 선언
1. let은 재선언을 할 수 없다.
2. let은 변수를 덮어 쓸 수는 있다.
위 예제를 보면 알 수 있듯이 덮어쓰기는 가능하나, 재선언시에는 'Identifier 'var2' has already been declared' 라는 에러 메세지가 출력된다.
'이미 선언되어 재선언할 수 없다'는 메세지이다.
즉, 덮어쓰기를 허용 할 변수에는 let을 사용해야 한다.
const를 이용한 변수 선언
const는 재선언, 덮어쓰기가 모두 불가능한 엄격한 변수 선언 방법이다.
'constant = 상수'
const는 기본적으로 변수 덮어 쓰기, 재선언 모두 불가능하다.
그러나 변수 종류에 따라 const로 정의해도 변수값을 변경할 수 있는 경우가 있으므로 주의해야 한다.
const로 정의한 변수를 변경할 수 있는 경우
문자열이나 수치 등 프리미티브 타입이라 불리는 종류의 데이터는 const를 이용해 정의한 경우 덮어 쓸 수 없다.
하지만 객체나 배열 등 오브젝트 타입이라 불리는 데이터들은 const로 정의해도 값을 변경 할 수 있다.
즉, 객체를 정의할 때는 기본적으로 const를 이용한다. 배열 역시 마찬가지이다.
참고: 모던 자바스크립트로 배우는 리액트 입문
'DEV > Javascript' 카테고리의 다른 글
[자바스크립트]객체, 배열 분할대입 (10) | 2023.06.06 |
---|---|
[자바스크립트]백틱을 이용한 템플릿 문자열 (13) | 2023.06.06 |
javascript promise 사용법 (0) | 2023.01.13 |
javascript filter 사용법 (0) | 2023.01.11 |
javascript map 사용법 (1) | 2023.01.11 |
댓글