JavaScript에서 var 키워드로 선언한 변수를 다시 선언해도 기존에 저장된 값은 그대로 유지됩니다. 즉, 값을 재할당하지 않고 단순히 변수를 한 번 더 선언하는 것만으로는 변수의 값이 초기화되거나 사라지지 않습니다.
예제
다음 예제에서는 변수 age를 먼저 20으로 선언하고, 이후 같은 이름으로 다시 한 번 선언합니다.
<html>
<body>
<script>
var age = 20;
var age; // 다시 선언해도 값은 유지됨
if( age > 18 ){
document.write("운전 면허 취득 가능");
}
</script>
</body>
</html>실행 결과
운전 면허 취득 가능
위 코드에서 두 번째 var age; 선언은 변수의 값을 지우지 않기 때문에, 조건문에서 age의 값이 여전히 20으로 평가되어 "운전 면허 취득 가능"이라는 문구가 출력됩니다.
참고: let과 const의 경우
ES6(ES2015)에서 도입된 let과 const는 var와 달리 같은 스코프 내에서 변수를 다시 선언할 수 없습니다. 동일한 이름으로 다시 선언하려고 하면 SyntaxError가 발생합니다.
let age = 20; let age; // SyntaxError: Identifier 'age' has already been declared
따라서 최신 JavaScript 코드에서는 실수로 인한 변수 중복 선언을 방지하기 위해 let 또는 const 사용을 권장합니다.