var, let, const❓
var 로 변수를 선언하는 경우 문제점이 발생하게 됩니다
- 변수 중복 선언이 가능하여 예기치 못한 값을 반환할 수 있다는 점
- 함수 레벨 스코프로 인해 함수 외부에서 선언한 변수는 모두 전역변수가 된다는 점
- 변수 선언문 이전에 변수를 참조하면 언제나 undefined를 반환한다는 점
이렇게 크게 3개의 문제점이 있었습니다 그리고 이 문제점을 ES6에서 나온 let과 const로 해결하게 되었습니다
1. 변수 중복 선언 문제
1. let
let 키워드로는 변수 중복 선언이 불가능하지만, 재할당은 가능하게 되었습니다
2. const
변수 재선언이 불가하며 재할당도 가능하지 않습니다
그러나 재할당을 금지할 뿐, 불변을 의미하는 것은 아닙니다
2. 함수 레벨 스코프 문제
let, const 키워드로 선언한 변수는 모두 블록 레벨 스코프를 따릅니다
* 블록레벨 스코프
코드 블록(함수, if, for, while문 등)을 지역 스코프로 인정하는 것
- const 와 let 키워드는 동일하게 동작합니다
3. 변수 호이스팅 문제
1. let
let 키워드로 선언한 변수는 선언 단계와 초기화 단계가 분리되어 진행됩니다
→ 런타임 이전에 자바스크립트 엔진에 의해 선언 단계가 먼저 실행되지만, 초기화 단계가 실행되지 않았을 때 해당 변수에 접근하려고 하면 참조 에러가 뜨게 됩니다
2. const
const로 선언한 변수는 선언단계와 초기화 단계가 동시에 진행됩니다
기본적으로 변수의 스코프는 최대한 좁게 만드는 것을 권장합니다. 따라서 범위가 넓은 var 보다는 let과 const를 사용하는것이 좋으며, 변경하지 않는 상수값이라면 let보다는 const 키워드를 사용하는것이 좋다고 할 수 있습니다
'JavaScript' 카테고리의 다른 글
프로그래머스 - 두 수의 곱 (0) | 2022.10.27 |
---|---|
typeof 연산자 (0) | 2022.07.19 |