자료형에 대한 내용은 학습하기에는 지루한 파트다. 하지만 컴퓨터 프로그램에서 자료형의 중요성이 크기 때문에 소홀히 할 수 없는 부분이다. 컴퓨터를 진정 쓸모있게 하는 것은 결국 자료들이다. 자료들이 모여 정보가 되고 정보를 활용할 수 있는 시스템을 갖출 때 그 진가가 발휘된다.

 

자료의 중요성은 누구나 알고 있지만 이제는 거의 공기같은 존재가 되버려서 기초부터 공부하려면 좀 인내심이 필요하다. 하지만 습득할 수록 빛이나는 부분이니까 그에 대한 보상은 걱정하지 않아도 된다.

 

다른 언어들과 유사하게 자바스크립트의 자료형도 기본 자료형과 복합 자료형으로 나눌 수 있다.

 

자료형은 영어로 Data Type 이라고 한다.

 

1. 기본형

 

기본 자료형이란 원초적인 형태를 의미한다. C와 자바같은 컴파일 언어는 정수 타입만 하더라도 short, int, long 등 세분화되있지만 자바스크립트는 좀 더 간편하게 되어있다.

자료형 내용
숫자 - number 숫자, 정수를 말한다
문자열 - string 문자열은 ('') ("") 작은따옴표, 큰따옴표로 표시한다
불린(논리) - boolean 불린(논리)형은 참과 거짓 true and false 값을 갖는다
undefined 자료형이 지정되지 않은 경우다. 초기화가 안된 변수다
null null 은 값이 비어있음을 나타낸다. 혹은 참조가 없음.

 

2. 복합형

 

복합형이란 배열이나 객체형태를 말한다. 자바스크립트은 객체지향 프로그래밍이라서 객체를 정의할 수 있다.

자료형 내용
배열 - array 인덱스값으로 접근하는 자료 형태다
객체 - object  객체지향언어의 객체는 특수한 함수인 메소드와 멤버변수인 속성을 갖고 있다

 

변수를 선언하는데는 var 키워드를 쓴다. 그런데 var 키워드를 사용할 때 위에 있는 어떤 자료형이 사용되는지 어떻게 알까? 사용자가 정하지 않고 자바스크립트 번역기가 결정한다. 콘솔에서 확인해보자. typeof 연산자를 사용하면 객체의 타입을 알 수 있다.

 

여기서 배열도 object 로 표현되는 것을 볼 수 있는데 자바스크립트는 배열을 객체로 생성한다. 배열안에도 객체를 담을 수 있다. C언어라면 바이트 단위로 계산해야 하는 것들을 자바스크립트에서는 신경쓰지 않고 사용할 수 있다. 이런 차이를 알아두면 좀 더 자료구조에 대하여 구체적인 묘사를 할 수 있다. 자바스크립트에서는 그것까지 신경쓰지 않아도 되니 충분히 장점을 활용할 수 있다.

 

*실수나 정수, 음수, 양수 모두 number(숫자) 타입이다. 물론 내부적으로 저장되는 방식은 같지 않다. 소수점을 표현하는 실수를 사용할 때 부동소수점은 정확도가 떨어지기 때문에 정밀한 숫자를 사용해야 하는 경우는 주의해야한다. (정확도를 위해 정수를 실수처럼 사용하는 방법이 있다.)

 

 이상해 보이지만 부동소수점 방식의 한계다.

텍스트를 표현하는 문자열은 문자형의 배열로 만들어진다. 문자열은 객체로 보는쪽이 더 맞고 원래의 개념에서 기본 자료형은 아닐 수도 있다. 왜냐하면 정수형의 경우 1, 2, 3, 4... 숫자의 크기에 따라 사용하는 바이트의 수가 예측이 가능한데 문자열은 예측이 어렵다. 아스키코드로 "Hello" 는 6바이트를 차지하고 "Java Script" 는 11 바이트를 차지하는 등 글자수에 따라 저장에 사용하는 바이트 개수가 가변적이기 때문이다.

 

그런 부분을 고려하지 않아도 고급(high level) 언어인 자바스크립트에서는 그냥 편하게 문자열을 사용할 수 있다.

 

* 불린(논리) 타입은 참과 거짓을 갖고 있다.

 

참은 true 거짓은 false 로 제어문에서 조건식을 평가할 때 사용한다.

 

* 배열형은 인덱스로 사용할 수 있고 인덱스는 0에서 시작한다. 위의 코드를 보면 배열안에 문자열을 넣은 것을 볼 수 있다. 배열은 간단하지만 연속적으로 데이터를 저장할 수 있기 때문에 유용성이 높은 타입이다. 

 

자바스크립트 객체 타입은 조금 특이하다. 키와 값으로 연결된 자료들을 가지고 있다. 객체는 별도의 챕터에서 좀 더 자세히 들여다 볼 것이다. 여기서는 하나의 자료 타입으로 이해하면 충분하다.

 

자료 타입이 엄격하지 않은게 편할 수도 있고 불편할 수도 있다. C와 같은 전통적 방식으로 프로그래밍을 해온 사람에게는 좀 피곤할 수도 있다. 요새는 이렇게 타입을 알아서 추측하는 언어들이 트렌드를 타고 있으니 알아둬야 한다.

 

필자도 오래전에 C언어로 처음 프로그래밍을 접해서 타입 추측과 동적 타입에 아직 익숙하지가 못하다. 요새 학생들은 처음에 동적 타입을 많이 접할테니 이쪽이 더 자연스러운 경우도 많다.

 

이제 프로그래밍 언어는 전공자 비전공자 할 거 없이 4차산업 시대의 인재에게 기본 소양이 되고 있는데 이런 추세가 반영된 것이라고 본다. 아무래도 컴퓨터의 시스템 언어인 C계열과 자바는 컴퓨터 엔지니어가 전문성을 나타내는 부분이고 응용 소프트웨어나 웹의 프론트엔드는 다른 전공에서 충분히 성과를 내고 있다. 예를 들어 시각 디자인을 전공한 사람이 프론트엔드까지 겸하는 경우로 볼 수 있다.

 

이것을 정확하게 프론트엔드냐 백엔드냐 시스템이냐 딱 잘라 나누면 좋겠지만 스타트업이나 중소기업은 예산과 인원의 한계로 그렇지 못한 경우가 많다. 프론트엔드 UI 디자인처럼 새로운 직종이 생겨나기도 하고 또 다른 직종이 생길 수도 있는 것이 현재의 IT기술의 발전 속도니까 특정의 언어에 안주하지 않고 끓임없이 공부하는 것이 필요하다. IT소프트웨어는 죽을 때까지 새로운 기술을 공부해야 하는 숙명을 타고 났는데 기왕할거면 의미를 부여하고 즐겁게 하는게 좋다.

글을 쓰면서도 현실과 괴리감이 느껴진다;;;

 

공유하기

facebook twitter kakaoTalk kakaostory naver band