JavaScript가 동적 타입 언어인 이유
JavaScript는 대표적인 동적 타입(Dynamic Typing) 언어입니다. 변수를 선언할 때 데이터 타입을 미리 지정하지 않아도 되며, 하나의 변수에 문자열, 숫자 등 서로 다른 타입의 값을 자유롭게 저장할 수 있습니다.
이것이 가능한 이유는 JavaScript에서 변수 자체에는 고정된 타입이 없고, 변수에 할당된 값이 런타임 시점에 타입을 결정하기 때문입니다. 반면 Java나 C와 같은 정적 타입 언어에서는 변수를 선언할 때 타입을 반드시 명시해야 하며, 한 번 정해진 타입은 변경할 수 없습니다.
예제
아래 예제에서는 하나의 변수 val에 문자열과 숫자를 차례대로 할당합니다. 값이 바뀔 때마다 변수의 타입도 함께 달라지는 것을 확인할 수 있습니다.
<html>
<head>
<script>
var val;
val = "Amit";
document.write("String: "+val);
val = 20;
document.write("<br>Number: "+val);
val = 40.90;
document.write("<br>Number with decimals: "+val);
</script>
</head>
<body>
</body>
</html>
실행 결과:
String: Amit
Number: 20
Number with decimals: 40.90
동적 타이핑의 장단점
장점
- 타입 선언 없이 빠르게 코드를 작성할 수 있어 개발 속도가 빠릅니다.
- 상황에 따라 유연하게 값을 다룰 수 있어 코드가 간결해집니다.
단점
- 잘못된 타입의 값이 할당되어도 컴파일 단계에서 잡아주지 못하고, 런타임에 오류가 발생할 수 있습니다.
- 대규모 프로젝트에서는 타입 관련 버그 추적이 어려울 수 있습니다.
이러한 한계를 보완하기 위해 최근에는 Microsoft가 개발한 TypeScript처럼 정적 타입 검사를 추가한 JavaScript 상위 언어가 널리 활용되고 있습니다.