본문 바로가기
프론트엔드/Deepdive

3. 데이터 타입(Data Type

by 귀월 2022. 11. 28.

3.1) 데이터 타입이란?

  • 값의 종류를 의미하며, js의 모든 값은 데이터 타입을 갖는다.
  • 숫자, 문자열, 불리언, undefined, null, 심볼, 객체 총 7개의 타입으로 구성된다.
  • 종류에 따라 확보할 메모리 공간의 크기, 메모리에 저장되는 2진수, 메모리로부터 읽어들여 해석하는 방식 등이 다르다.
  • ex) 숫자 1, 문자 '1' -> 각각 다른 크기의 메모리 할당. 문자 '1'은 산수 연산 불가능.

 

3.2) 숫자 타입(Number)

  • 산수 연산이 가능한 데이터 타입.
  • 타 언어와 달리 하나의 숫자 타입(실수)로 모든 연산 처리.
  • 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않기 때문에 모든 연산 결과는 10진수로 출력.

  • 특별한 세 가지의 값 출력 가능. ex) Infinity, -Infinity, NaN(산술 연산이 불가능한 경우)

 

3.3) 문자열 타입(String)

  • 텍스트 데이터를 나타내는데 사용하는 데이터 타입.
  • 작은 따옴표(' '), 큰 따옴표(" "), 백틱(` `) 등으로 표현할 수 있다.

  • 따옴표 등 미사용 시 해당 키워드를 식별자로 인식하여 오류가 발생한다.

 

3.4) 템플릿 리터럴

  • ES6에서 도입된 새로운 문자열 표기법이다.
  • 백틱(` `)을 사용하여 멀티라인 문자열, 표현식 삽입 등 편리한 문자열 처리 기능을 제공한다.
  • ex) 멀티라인 문자열

  • ex) 표현식 삽입

 

3.5) 불리언 타입(boolean)

  • 논리적 참, 거짓을 나타내는 true, false 값이다.
  • 프로그램의 흐름을 제어하는 조건문에서 자주 사용한다.

 

3.6) undefined

  • undefined 타입의 값은 undefined만 존재한다.
  • var 키워드를 사용하여 선언한 변수가 값이 할당되지 않은(초기화되지 않은) 경우, 변수 참조 시 undefined를 반환한다.
  • js 엔진이 변수 초기화하는데 사용하는 타입이기 때문에 개발자 의도로 사용하면 안된다. 의도적으로 변수에 값이 없다는 것을 명시하고자 할 때는 null을 할당한다.

 

3.7) null

  • 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
  • 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하고 더 이상 참조하지 않는다는 의미이다.
  • 아무도 참조하지 않는 값의 메모리 공간은 가비지 컬렉션을 수행합니다. 
  • 가비지 컬렉션 : 사용하지 않는 메모리 공간의 할당을 해제하는 것.[1]

 

3.8) 심볼 타입(Symbol)

  • ES6에서 추가된 7번재 데이터 타입으로, 변경 불가능한 원시 타입의 값이다.
  • 다른 값과 중복되지 않는 유일무이한 값이다. 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
  • 생성된 값은 외부로 노출되지 않는다.
  • 선택적으로 문자열을 인수로 전달할 수 있다. 이는 심볼 값에 대한 설명 용도로만 사용되며, 심볼 값에 영향을 주지 않는다.

 

3.9)  객체 타입

  • 여러 타입의 값을 동시에 가질 수 있는 복합적인 자료 구조이다.
  • 원시 타입의 값과 달리 재할당 없이 객체를 직접 변경하거나 프로퍼티를 동적으로 추가, 갱신, 삭제가 가능하다. 이를 통해 메모리의 성능 향상과 효율적 소비가 가능하다.

 

3.10) 데이터 타입의 필요성

  • 값을 메모리에 저장할 때 메모리 공간의 낭비와 손실 없이 값을 저장할 수 있다.
  • 값 참조 시 읽어들일 메모리 공간의 크기를 정할 수 있다.
  • 메모리에서 읽어들일 2진수를 어떻게 혹은 어떤 타입으로 해석할지 결정할 수 있다.

 

3.11) 동적 타이핑

  • java와 같은 정적 언어는 할당할 데이터 타입을 미리 선언해야 한다. 또한 선언한 타입을 변경할 수 없으며, 해당 타입에 맞는 값만 할당할 수 있다. (타입 일관성 추구를 통해 안정적인 코드를 생산)
  • js와 같은 동적 언어는 선언이 아닌 할당 시점에 타입을 결정한다. 또한 재할당을 통해 변수 타입을 변환할 수 있다.
  • 동적 언어는 자유로운 할당이 가능하지만 변화하는 타입과 값을 추적하기 어렵고, 개발자의 의도와 다르게 동작할 수 있다. 따라서 안정적인 프로그램을 만들기 위해 다음과 같은 규칙을 준수해야 한다.
  1. 변수는 꼭 필요한 경우에만 제한적으로 사용한다. 변수가 많을수록 타입을 잘못 예측하여 오류를 발생시킬 가능성이 높다.
  2. 변수의 유효 범위를 최대한 좁게 만들어야 한다. 변수가 참조될 수 있는 범위가 넓을수록 오류를 발생시킬 가능성이 높다.
  3. 전역 변수는 최대한 사용하지 않는다. 전역 변수는 프로그램의 복잡성을 증가시키고 처리 흐름 추적을 어렵게 만든다.
  4. 상수(const)를 사용하여 값의 변경을 억제한다.
  5. 변수 이름은 변수의 기능을 파악할 수 있도록 짓는다.

 

출처 및 참고 자료

[1] 가비지 컬렉션

https://en.wikipedia.org/wiki/Garbage_collection_(computer_science) 

 

Garbage collection (computer science) - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Form of automatic memory management This article is about garbage collection in memory management. For garbage collection in a solid-state drive, see garbage collection (SSD). Stop-and

en.wikipedia.org

[2] 모던 자바스크립트 deep dive / 위키북스 / 이응모

반응형
LIST

'프론트엔드 > Deepdive' 카테고리의 다른 글

5. 제어문  (0) 2022.12.05
4. 연산자  (0) 2022.12.02
2. 표현식과 문  (0) 2022.11.15
1. 변수  (0) 2022.11.08

댓글