var
특징 및 단점
1. 호이스팅 문제 : var로 선언된 변수는 호이스팅되어 변수 선언이 코드의 최상단으로 끌어올려지지만, 초기화는 그대로 유지된다. 이로 인해 선언 이전에 변수를 참조할 경우 undefined가 반환되어 혼란을 초래할 수 있다.
2. 블록 스코프 없음 : var는 if문이나 for 루프와 같은 블록 내에서 선언된 변수도 블록 외부에서 접근할 수 있다. 이로 인해 예기치 않은 동작이 발생할 수 있다.
3. var 키워드 생략 : 함수 내에서 var 키워드 없이 사용하면 전역 변수가 생성된다.
이는 다른 코드와 충돌할 수 있으며, 전역 변수가 예상치 못한 변경을 겪을 수 있다.
4. 재선언 가능 : 같은 스코프 내에서 동일한 이름으로 변수를 여러 번 선언할 수 있다. 이로 인해 코드의 가독성이 떨어지고, 의도치 않은 오류가 발생할 수 있다.
let, const
특징 및 개선
1. 호이스팅 되지만 초기화 전 접근시 ReferenceError가 뜬다.
2. 블록 스코프 : 블록은 {}로 바인딩된 코드 묶음인데, if문 for 루프 포함하여 중괄호 속에서 변수 선언되었다면 해당 범위에서만 유효하다.
3. 선언위치 : 전역 위치에서 선언, 블록 위치에서 선언, 함수 위치에서 선언. 선언 위치에 따라 유효범위가 달라진다.
4. 재선언 불가능 : 같은 스코프 내에서는 동일한 이름으로 변수를 여러 번 선언할 수 없다.
var | let | const |
호이스팅 o | 호이스팅 o | 호이스팅 o |
변수 선언 | 변수 선언 | 상수 선언 (동시에 초기화 필수) |
업데이트 가능 | 업데이트 가능 | 업데이트 부분적 가능 (개체는 불가능, 속성은 가능) |
전역 / 지역 스코프 | 전역 / 지역 / 블록스코프 | 전역 / 지역 / 블록스코프 |
같은 범위 재선언 가능 | 같은 범위 재선언 불가능 | 같은 범위 재선언 불가능 |
선언 이전 접근 가능 (undefined / 초기화이전) |
선언 이전 접근 불가능 (ReferenceError / 초기화이전) |
선언 이전 접근 불가능 (ReferenceError / 초기화이전) |
'웹 프로그래밍 기초 > 반복문' 카테고리의 다른 글
변수/함수의 적용 범위(scope) (0) | 2025.04.03 |
---|---|
배열의 반복 (0) | 2025.04.03 |
continue문 (0) | 2025.04.03 |
break문 (0) | 2025.04.03 |
do while문 (0) | 2025.04.03 |