본문 바로가기
JavaScript

JavaScript, 느슨한 타입(loosely type) 의 동적언어(dynamic)

by nacjji 2022. 11. 18.
동적 타입

자바스크립트는 느슨한 타입(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