본문 바로가기
JavaScript/모던자바스크립트 Deep Dive 스터디

[모던JS DeepDive] 6장 데이터 타입

by 복숭아 우유씨 2023. 1. 3.

자바스크립트의 데이터 타입(data type)

데이터타입

- 값의 종류

- 모든 값은 데이터 타입을 갖는다.

구분 데이터 타입 설명 특이 사항
원시타입
(primitive
type)
숫자(number) 숫자
- 정수, 실수 구분 없음 (모두 실수로 처리)
- ±Infinity, NaN 포함
숫자 타입 값은 배정밀도 64비트 부동소수점 형식을 따르는 2진수로 저장된다.
문자열(string) 문자열
- 16비트 유니코드 문자(UTF-16)의 집합으로 표현
- '', "", ``으로 감싸야 함(토큰과 구분하기 위함)
- 변경 불가능함
템플릿 리터럴 표기법 도입
- 백틱으로 표현
- 멀티라인 문자열(이스케이프 시퀀스 사용하지 않아도 됨), 표현식 삽입(표현식을 ${}으로 감쌈, 표현식 평가결과는 문자열로 타입변환됨), 태그드 템플릿 기능 도입
불리언(boolean) true / false (논리) 조건문에서 주로 사용
undefined var 키워드로 선언된 변수에 암묵적으로 할당되는 값  
null 값이 없음을 의도적으로 명시
- 이전 참조를 명시적으로 제거
 
심벌(symbol) - 다른 값과 중복되지 않음
- Symbol 함수를 호출해서 생성함
ES6에서 추가됨
*BigInt (2^53) - 1 보다 큰 정수,  ES11에서 추가됨
객체타입 (Object / reference type) 객체, 함수, 배열 등  

* undefined와 null

- undefined: 자바스크립트 엔진이 초기화할 때 사용하는 값으로, 변수 선언 후 값이 할당되지 않은 변수라는 것을 알수 있게 해준다.

따라서 변수에 값이 없다는 것을 명시하기 위해서는 null 을 할당하는 것을 권장한다.

 

 

데이터 타입의 필요성

1) 값 저장시 메모리 공간 확보 크기 결정

 - 낭비와 손실을 없이 값 저장 필요

2) 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정

 - 값 훼손을 막기 위함

3) 메모리에서 읽어들인 2진수를 해석 방식 결정

 - 값은 2진수로 저장되기 때문에 타입에 따라 다르게 해석한다.

 

동적 타이핑

  정적 타입 언어 동적 타입 언어
언어 C, C++, Java, Kotlin, Go, 등 JavaScript, Python, PHP, Ruby, 등
특징 명시적 타입 선언(변수 선언시 타입을 사전에 선언함)
- 타입 변경 불가
- 타입에 맞는 값만 할당 가능
- 타입 일관성 강제
- 안정적인 코드 구현
- 런타임 에러 감소
할당에 의해 타입이 결정됨(타입 추론, type interface)
- 변수 선언시 타입 선언 하지 않음
- 타입 상관없이 할당 가능
- 값을 할당하는 시점에 변수 타입이 동적으로 결정됨
- 타입 변경 가능
>> 동적 타이핑(할당에 의한 타입 결정, 타입의 동적 변화 가능)

동적 타입 언어의 단점

- 변화하는 변수 값 추적의 어려움

- 값을 확인하기 전에 타입 확신 어려움

- 자바스크립트 엔진에 의해 암묵적인 형변환 발생하여 예측이 어려움

- 오류 발생 가능성 높음 (유연성은 높으나 신뢰성이 떨어짐)

 

변수 사용시 주의사항

- 제한적 사용 필요 (무분별한 남용 금지)

- 스코프 좁게 만들기

- 전역 변수 사용 지양

- 상수 사용

- 목적이나 의미를 파악할 수 있는 네이밍 필요

 


References...

1) 모던 자바스크립트 Deep Dive, 이웅모, 위키북스

2) https://poiemaweb.com/

댓글