데이터 타입 (2)

Sungw__k·2023년 12월 24일

💡 6.8 객체 타입

자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것이 객체이다. 이전에 살펴본 6가지 데이터 타입 이외의 모든 값은 객체 타입이다.



💡 6.9 데이터 타입의 필요성

그렇다면 데이터 타입은 왜 필요한가?


6.9.1 데이터 타입에 의한 메모리 공간의 확보와 참조

값은 메모리에 저장된다고 했는데 이 메모리 공간을 효과적으료 사용하려면 값을 저장하기 위해 확보해야 할 메모리 공간의 크기를 결정해야 한다.

var score = 100;

예를 들어 100이라는 숫자 타입을 score 변수에 할당하면 이를 저장하기 위한 메모리 공간 8바이트를 확보한 후, 메모리에 숫자 값 100을 2진수로 저장한다.

값을 참조할 경우도 마찬가지이다. 식별자 score를 숫자 100이 저장되어 있는 메모리 공간의 선두 메모리 셀의 주소를 찾아갈 수 있다. 이 때 읽어 들이는 메모리 공간의 크기가 달라지면 값이 훼손된다. 숫자 타입은 8바이트 단위로 저장되므로 score 변수를 참조하면 8바이트 단위로 읽게 된다.


6.9.2 데이터 타입에 의한 값의 해석

컴퓨터는 메모리에 데이터를 2진수, 즉 비트의 나열로 저장한다. 이를 해석하기 위해서도 데이터 타입이 필요하다.

예를 들어 메모리에 저장된 값 0100 0001을 숫자로 해석하면 65지만 문자열로 해석하면 'A'로 해석된다.


즉, 데이터 타입은 값의 종류를 말하며 자바스크립트의 모든 값은 데이터 타입을 갖는다. 데이터 타입이 필요한 이유는 다음과 같다.

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해



💡 6.10 동적 타이핑

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

C나 자바 같은 정적 타입 언어는 변수를 선언할 때 데이터 타입을 사전에 선언해야 한다. 이로 인해 타입에 맞는 값만 변수에 할당할 수 있으며 컴파일 시점에 타입 체크(선언한 데이터 타입에 맞는 값을 할당했는지)를 수행하여 통과하지 못했다면 에러를 발생시킨다.

자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑이라 하며, 자바스크립트와 같은 언어들을 동적 타입 언어라 한다. 대표적인 예로 자바스크립트, 파이썬, PHP, 루비 등이 있다.


6.10.2 동적 타입 언어와 변수

동적 타입 언어는 변수에 어떤 데이터 타입의 값이라도 자유롭게 할당할 수 있다. 이는 유연성 면으로는 뛰어나나 신뢰성은 떨어진다.

변수 값이 언제든지 변경될 수 있기에 복잡한 프로그램에서는 변화하는 변수 값을 추적하기가 어려울 수 있다. 또한 타입이 고정되어 있지 않고 동적으로 변하기에 변수의 값을 확인하기 전에는 타입을 확신할 수 없다. 더욱이 자바스크립트는 자바스크립트 엔진에 의해 암묵적으로 타입이 자동으로 변환되기도 하기 떄문에 예기치 않은 오류가 발생할 수 있다.

따라서 변수를 사용할 때 주의할 사항은 다음과 같다.

  • 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다.
  • 변수의 유효 범위(스코프)는 최대한 좁게 만들어 변수의 부작용을 억제한다.
  • 전역 변수는 최대한 사용하지 않도록 한다.
  • 변수보다는 상수를 사용해 값의 변경을 억제한다. (const)
  • 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다.

코드는 동작하는 것만이 존재 목적은 아니다. 코드는 개발자를 위한 문서이기도 하다. 따라서 사람이 이해할 수 있는 코드 즉, 가독성이 좋은 코드가 좋은 코드다.

0개의 댓글