06장 데이터 타입
모던 자바스크립트 딥다이브 06장 데이터 타입
데이터 타입
데이터 타입 = 타입 = 값의 종류
ES6부터 7개의 데이터 타입을 제공
원시타입
숫자
문자열
불리언
undefined
null
symbol
객체타입
숫자타입
자바스크립트는 하나의 숫자 타입만 존재한다. ( 다른 언어들은 int, integer, long ... 많음)
| Q. TypeScript 는 숫자의 타입을 따로 구분하고 있을까?
모든 수는 실수
64비트 부동소수점 형식
양의 무한대/음의 무한대/Not a Number = NaN
NaN ≠ Nan ≠ nan, Only NaN means 'Not a Number'
|Q. What is 양의 무한대, 음의 무한대?
문자열타입
'' 작은 따옴표
"" 큰 따옴표
``백틱
멀티라인, 공백
자바스크립트의 문자열은 원시 타입이며, 변경 불가능한 값이다. 이것은 문자열이 생성되면 그 문자열을 변경할 수 없다는 것을 의미한다.
|Q. 원시타입이기 때문에 메모리에 변수를 할당할때 그 변수 주소값을 아예 바꿔버리는 걸까?
불리언타입
true, false
undefined타입
undefined가 유일
자바스크립트 엔진이 메모리 공간을 확보한 다음 초기화 할때 주로 사용한다.
개발자가 의도적으로 빈 값임을 표현하기 위해 undefined를 사용하는 것은 지양된다. (이런 경우가 있다면 null을 쓰는것을 지향)
| 자바스크립트 엔진에 의해 묵시적으로 false로 평가되는 값은 null, '', undefiend인데 서로 성격이 조금씩 다르네..
null타입
null 유일
null ≠ Null ≠ NULL, Only null means '의도적 부재'
함수에서 값이 반환하지 않거나 되지 않을 경우 null을 반환하기도 한다. (undefined가 반환되는 것이 타당하다는 의견도 있음)
symbol타입
원시타입
Symbol 함수를 통해서만 생성됨
var Key = Symbol('key');
외부에 노출되지 않으며, 다른 값과 중복 되지 않는 유일 무이한 값
|Q. 소스 코드 상 외부에 노출 되지 않으면서 유일해야하는 코드성 데이터들에 사용하는 걸까? 사용 용례가 궁금하다.
객체타입
자바스크립트는 객체 기반 언어
원시 타입 ↔︎ 객체타입
11장 참고
객체타입은 변경 가능한 값을 뜻한다.
원시타입은 변경 불가능한 값을 뜻한다.
객체타입을 복사해서 다른 변수에 할당 할 경우 해당 객체 타입의 주소값이 두번 째 변수의 메모리 공간에 저장됨. (바로가기 개념)
원시타입을 복사해서 다른 변수에 할당 할 경우 해당 원시 타입의 원시값이 두번 째 변수의 메모리 공간에 값 자체가 저장된다. (복사 개념)
데이터타입의 필요성
값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
값을 참조할 때 한 번에 읽어야 하는 메모리 공간의 크기를 파악하기 위해
메모리에서 읽어들인 01010101 어쩌고 2진수를 어떻게 해석할지 결정하기 위해
같은 2진수라도 어떨땐 문자열 A 어떨 땐 숫자 25
동적타이핑 vs 정적타이핑
자바스크립트의 모든 값은 타입을 가진다.
동적타이핑
변수에 할당된 값에 따라서 타입이 결정된다.
정적타이핑
변수를 선언할 때 할당 할 수 있는 값의 종류, 즉 타입을 지정해준다.
Last updated