변수 선언은 var, const, let으로 할 수 있지만, const와 let의 사용을 권장한다.
왜 var보다는 const와 let의 사용을 권장하는 걸까?
var의 문제점
- 변수 중복 선언이 가능하여 예기치 못한 값을 반환할 수 있다.
- 변수 선언문 이전에 변수를 참조하게 되면 underfined를 반환한다.
var (변수 재선언 가능)
- 대부분의 프로그래밍 언어들이 블록 레벨 스코프를 사용하고 있지만, var은 함수 레벨 스코프를 갖는다
(위에서 차례대로 읽음)
- 변수 선언을 여러번해도 에러없이 다른 값이 출력될 수 있다.
같은 변수명을 남용하는 문제가 있으므로 이를 보완하기 위해서 es6부터는 let, const가 추가되었다.
const a = 100
console.log(a)
{
const a = 200
console.log(a)
{
const a = 300
console.log(a)
}
console.log(a)
}
console.log(a)
//100, 200, 300, 300, 300
let (변수 재선언 불가능, 변수 재할당 가능)
- 블록 스코프를 가지고 있다
- 변수의 재할당은 가능하지만 var처럼 재선언은 불가능하다.
const a = 100
console.log(a)
{
const a = 200
console.log(a)
{
const a = 300
console.log(a)
}
console.log(a)
}
console.log(a)
//100, 200, 300, 200, 100
const (변수 재선언 불가능, 변수 재할당 불가능)
const는 상수를 의미하는데 상수는 한번만 선언이 가능하며, 값을 재할당을 통해 바꿀 수 없다.
const a = 100
console.log(a)
{
const a = 200
console.log(a)
{
const a = 300
console.log(a)
}
console.log(a)
}
console.log(a)
//100, 200, 300, 200, 100
반응형
'JavaScript' 카테고리의 다른 글
[Javascript] Array push() vs concat()비교 (0) | 2022.05.26 |
---|---|
[Javascript] 화살표 함수 (0) | 2022.05.25 |
[Javascript] 삼항 연산자와 논리 연산자 (0) | 2022.05.24 |
[Javascript] 템플릿 리터널(Template Literal) (0) | 2022.05.23 |
[Javascript] 엄격모드 (0) | 2022.03.29 |