[JS] 동적 타입 언어 자바스크립트

cabbage·2023년 6월 12일

JS

목록 보기
34/43
post-thumbnail

자바스크립트에서 변수의 타입을 선언할 수 있을까?

동적 타입 언어와 정적 타입 언어

결론부터 말하자면, 자바스크립트는 동적 타입 언어이다. 따라서 변수의 타입을 선언하지 않는다. 동적 타입 언어가 무엇인지 알아 보기 전에 정적 타입 언어가 무엇인지 이해하면 동적 타입 언어를 더 쉽게 이해할 수 있다.

정적 타입 언어란 변수 선언 시 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 명시적으로 선언해야 하는 언어이다.

정적 타입 언어는 변수의 타입을 변경할 수 없고 변수에 선언한 타입에 맞는 값만 할당할 수 있다.

  • 컴파일 시점에 타입 체크를 수행한다.
  • 타입 체크를 통과하지 못하면 컴파일이 실패한다.
  • 타입의 일관성을 강제해 런타임 에러를 줄인다.
  • 예시: C, C++, Java

정적 타입 언어의 경우, 자바스크립트와 다르게 변수를 선언할 때 데이터 타입을 명시적으로 선언해야 한다.

  • 이 변수에 할당 가능한 값의 종류가 숫자형 타입인지, 문자열 타입인지를 명시해야 한다는 것이다.
  • 변수에 할당 가능한 값의 데이터 타입을 명시적으로 선언하면, 변수에는 명시적으로 선언한 데이터 타입에 맞는 값만 할당할 수 있게 된다.

자바스크립트는 정적 타입 언어가 아닌 동적 타입 언어이다. 그렇다면 동적 타입 언어란 무엇일까.

동적 타입 언어란 선언이 아닌 할당에 의해 변수의 타입이 결정되는 언어이다.

자바스크립트에서는 변수의 데이터 타입을 선언하지 않는다. 값을 할당함으로써 변수의 데이터 타입이 결정된다. 그리고 값을 재할당하면 변수의 데이터 타입은 동적으로 변경된다.

let foo;
console.log(typeof foo); // undefined

foo = 1;
console.log(typeof foo); // number

foo = '1';
console.log(typeof foo); // string

foo = true;
console.log(typeof foo); // boolean

foo = {};
console.log(typeof foo); // object
  • typeof 연산자는 변수에 할당된 값의 데이터 타입을 반환한다.

자바스크립트에서 변수는 어떤 데이터 타입의 값이라도 저장할 수 있으므로 정적 타입 언어에서의 데이터 타입과 개념이 다르다.

  • 정적 타입 언어는 변수 선언 시점에 변수의 데이터 타입이 결정되고 다시 변경할 수 없다.
  • 동적 타입 언어인 자바스크립트는 값을 할당하는 시점에 변수의 데이터 타입이 결정되고 이후에 재할당하는 값에 따라 변수의 데이터 타입이 변경된다.

데이터 타입의 필요성 포스팅에서도 언급했듯이 자바스크립트의 모든 값은 데이터 타입을 갖는다. 변수가 아닌 값이 데이터 타입을 갖는다. 따라서 자바스크립트에서 변수의 데이터 타입은 변수에 할당된 값에 의해 결정된다고 볼 수 있다.

참고

  • 모던 자바스크립트 Deep Dive - 이웅모
profile
캐비지 개발 블로그입니다. :)

0개의 댓글