동적 타입
자바스크립트는 느슨한 타입(loosely type) 의 동적 언어(dynamic)언어이다.
- 자바스크립트의 변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 및 재할당이 가능하다
느슨한 타입과 엄격한 타입의 차이
- 자바스크립트와 자바의 차이를 비교해보자
let number = 1
let strNumber = '1'
console.log(number*strNumber)
console.log(typeof (number*strNumber))
>> 1
number
- 자바스크립트의 코드를 보면, 숫자 자료형인 number 와 숫자를 문자열로 표현한 문자열 strNumber 를 선언하고 둘을 곱한 결과는 1이고, 결과의 자료형은 number로 출력이 되었다.
public class type {
public static void main(String[] args) {
int number = 1;
String strNumber = "1";
System.out.println(number * strNumber);
}
}
>> type.java:6: error: bad operand types for binary operator '*'
System.out.println(number * strNumber);
^
first type: int
second type: String
1 error
- 자바의 경우 같은 방식으로 1과 "1" 을 곱할 때 숫자 자료형과 문자 자료형은 * 연산자를 사용할 수 없다는 에러가 발생했다.
- 이처럼 자바스크립트는 숫자 자료형과 숫자로 이루어진 문자 자료형의 연산을 수행할 때 문자열 자료형을 숫자 자료형으로 재할당해 연산을 수행했다.
- 자바스크립트의 이런 특징은 코딩의 자유도를 높여주지만, 다른 사람과 협업 또는 코드의 양이 많아질 경우 예상치 못한 에러를 만날 가능성이 높아진다.
- 이런 단점을 보완하기 위해 TypeScript 를 사용하기도 한다.
'JavaScript' 카테고리의 다른 글
JavaScript, == 와 ===의 차이, undefined 와 null의 차이 (0) | 2022.11.18 |
---|---|
JavaScript 형변환 (0) | 2022.11.18 |
JavaScript 동기 비동기 (0) | 2022.11.12 |
JavaScript 비동기 처리 이해하기(Callback) (0) | 2022.11.12 |
JavaScript, Scope (0) | 2022.11.11 |