JavaScript에서 var로 선언된 변수 자체에는 고정된 타입이 없습니다. 대신 변수에 저장되는 값이 각각의 타입을 가지며, 같은 변수에 새로운 값을 언제든지 다시 할당할 수 있습니다. 값을 재할당하면 해당 변수가 담고 있는 데이터의 타입도 함께 바뀌게 됩니다.
예를 들어 하나의 변수에 불리언(Boolean), 숫자(Number), 문자열(String)을 순서대로 할당하면, typeof 연산자를 통해 매번 다른 타입이 출력되는 것을 확인할 수 있습니다.
예제
<!DOCTYPE html> <html> <body> <script> var a; document.write(typeof a+"\r\n"); a = true; document.write(typeof a+"\r\n"); a = 5; document.write(typeof a+"\r\n"); a = "web"; document.write(typeof a+"\r\n"); </script> </body> </html>
실행 결과
undefined boolean number string
코드 설명
위 예제의 동작 과정을 단계별로 살펴보면 다음과 같습니다.
- var a; — 변수
a를 선언만 하고 초기화하지 않았으므로, 타입은undefined입니다. - a = true; — 불리언 값
true를 할당했기 때문에 타입이boolean으로 변경됩니다. - a = 5; — 숫자
5를 할당하여 타입이number로 바뀝니다. - a = "web"; — 문자열
"web"을 할당하여 타입이string으로 변경됩니다.
이처럼 JavaScript는 동적 타이핑(Dynamic Typing) 언어이므로, 변수를 선언할 때 타입을 미리 지정할 필요가 없으며 실행 중에 값이 바뀌면 타입도 유연하게 따라갑니다. 참고로 최신 JavaScript에서는 블록 스코프를 지원하는 let과 const 사용이 권장되지만, 값의 재할당과 타입 변경 방식은 동일하게 적용됩니다.