웹 프로그래밍 기초/반복문

var의 문제점과 개선

별초롱언니 2025. 4. 3. 17:54

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