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

김영웅·2022년 5월 20일
0

JavaScript

목록 보기
3/14

'JavaScript의 변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당) 가능하다.'

자바스크립트는 느슨한 타입(loosely typed)의 동적(dynamic) 언어입니다. 먼저 정적 언어와 동적 언어의 차이에 대해서 알아보겠습니다.

정적 언어 (Statically Typed Language)

  • 정적 언어란 컴파일 시간에 변수의 타입이 결정되는 언어입니다. 타입 즉, 자료형을 런타임 이전에 결정하는 것입니다. 대표적인 정적 언어로는 C, C++, Java 등이 있습니다.
  • 정적 언어는 변수에 들어갈 값의 형태에 따라 자료형을 지정해주어야 합니다.
  • 컴파일 시에 자료형에 맞지 않는 값이 들어있을 경우 컴파일 에러가 발생합니다. 만약 Type Error이 발생할 코드가 있다면 컴파일 하는 과정에서 오류를 출력합니다.
  • 컴파일 시간에 변수의 타입을 체크하므로 사소한 버그들을 쉽게 체크할 수 있는 장점이 있습니다.
    즉 타입 에러로 인한 문제점을 초기에 발견할 수 있어 타입의 안정성이 올라갑니다.

동적 언어 (Dynamically Typed Language)

  • 런타임에 비로소 타입이 결정되는 언어입니다. 소스가 컴파일, 빌드될 때 자료형을 결정하는 것이 아니라 실행할 때 결정됩니다. 언어 자체에서 타입을 추론해서 형을 변환해 줍니다. 대표적인 동적 언어로는 JavaScript, Ruby, Python 등이 있습니다.

  • 변수를 생성할 때 마다 매번 타입을 써줄 필요가 없기 때문에 기본적으로는 편하고 빠르게 코드를 작성하기 좋습니다.
    하지만 실행 도중에 변수에 예상치 못한 타입이 들어와 Type Error가 발생하는 경우가 생길 수 있습니다. 정적 언어와 달리 실행되는 시점에서 오류를 출력합니다. 특히 프로젝트의 크기가 크거나 협업을 하는 과정에서 변수의 타입이 일치하지 않는 경우가 생길 수 있으므로 주의를 기울여야 합니다.

  • 자바스크립트가 가진 동적 언어의 단점을 보완하는 방법으로는 TypeScript를 사용하는 방법이 있습니다. 타입스크립트란 자바스크립트에서 코드를 입력할 때 타입을 미리 부여하는 기능을 추가한 정적 타입 언어입니다.

profile
주니어 PM을 꿈꾸고 있습니다!

0개의 댓글