WEB/JavaScript
변수 선언 방식 var, let, const 의 차이점
hatso
2021. 8. 27. 18:47
var
의 변수 선언 방식은 단점을 가지고 있음
var topic = 'nodejs'
console.log(topic) // nodejs
var topic = 'mysql'
console.log(topci) // mysql
변수를 다시 선언해도 에러가 나오지 않고 각기 다른 값이 출력됩니다.
이러한 상황이 반복된다면 코드의 복잡성이 증가함에 따라 곤란한 경우가 생길 수 있다.
때문에 많은 javascript 개발자들은 이러한 문제를 방지 하기 위해 let
과 const
를 사용하여 변수를 선언하기로 하였다.
let
은 변수에 재할당이 가능하다.
let topic = 'nodejs'
console.log(topic) // nodejs
let topic = 'mysql'
console.log(topci) // Uncaught SyntaxError: Identifier 'topic' has already been declared
topic = 'ajax'
console.log(topic) // ajax
const
는 변수 재선언, 재할당 모두 불가능하다.
const topic = 'nodejs'
console.log(topic) // nodejs
const topic = 'mysql'
console.log(topci) // Uncaught SyntaxError: Identifier 'topic' has already been declared
topic = 'ajax'
console.log(topic) //Uncaught TypeError: Assignment to constant variable.
결론
기본적으로 변수 선언에는 const
를 사용하고, 재할당이 필요한 경우에만 let
을 사용하는 것을 추천.
- 상수와 객체는 재할당이 필요없으므로 const
를 사용한다.
*스코프(scope) : 변수 참조가 가능한 유효 범위
*재할당 : 다시 배치,배분,배포 하다.
복습 후 추가 정리
Function Scope 함수 범위 : Var
Block Scope 블록 범위 : Let, Const
Global Scope 전역 범위
다른 언어와 달랐던 Javascript의 변수 선언과정에서 범위를 엄격하게 관리하기 위함.
Const는 선언과 초기화가 동시에 이루어져야함.
const a = {
x: 1,
y: 2,
};
a.x = 3;
//객체 자체를 바꾸는 것은 불가능
//객체의 속성을 바꾸는 것은 가능
console.log(a);
//{x: 3,y: 2}
Const를 사용하면서 객체의 불변성을 유지하고 싶다면 Object.freeze()를 사용하면 된다.
const a = Object.freeze({
x: 1,
y: 2,
});
a.x = 3;
console.log(a);
//{x: 1,y: 2}