codinghatso

변수 선언 방식 var, let, const 의 차이점 본문

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 개발자들은 이러한 문제를 방지 하기 위해 letconst를 사용하여 변수를 선언하기로 하였다.

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}

'WEB > JavaScript' 카테고리의 다른 글

NaN와 Infinity  (0) 2022.01.10
JavaScript에는 -0 이 존재한다?  (0) 2022.01.10
숫자 표현과 숫자 변환 기초  (0) 2022.01.10
JS 변수명 사용 규칙과 제약사항  (0) 2022.01.07
JS 변수 선언.내부구조  (0) 2022.01.07
Comments