일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- dev
- 함수
- html5
- developerlife
- hooks
- JS
- ES6+
- github
- react
- Python
- array
- hatso
- object
- This
- API
- 우아한테코톡
- ES5+
- JavaScript
- next.js
- git
- gitCLI
- learn next.js
- AI
- es6
- DOM
- 최적화
- 햇소
- CSS
- 변수
- 선택자
Archives
- Today
- Total
codinghatso
변수 선언 방식 var, let, const 의 차이점 본문
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}
'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