[자바스크립트 Deep Dive] 6. 데이터 타입

unhyif·2022년 5월 16일
0
  • 데이터 타입은 값의 종류로, 원시 타입/객체 타입으로 나누어짐

원시 타입: 변경 불가능한 값

객체 타입: 원시 타입 이외의 값


6.1 숫자 타입

  • 모든 수를 실수로 처리함
console.log(10 === 10.0); // true
  • Infinity, -Infinity, NaN 포함

6.2 문자열 타입

  • 작은따옴표('')/큰따옴표("")/백틱(``) 사용

6.3 템플릿 리터럴

  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공함
  • 런타임에 일반 문자열로 변환됨
  • 백틱(``) 사용

6.7 심벌 타입

  • 주로 고유한 프로퍼티 키를 만드는 데에 사용됨
  • 생성된 심벌 값은 외부에 노출되지 않음
const sym = Symbol();
const sym2 = Symbol();

const obj = {};
obj[sym] = 1;
obj[sym2] = 1;
console.log(obj); // {Symbol(): 1, Symbol(): 1}

6.8 객체 타입

  • 자바스크립트를 이루는 거의 모든 것이 객체임

6.9 데이터 타입의 필요성

값을 저장/참조할 때, 메모리에서 읽어 들인 2진수를 해석할 때 활용됨

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

  • 값을 저장하기 위해서는 확보할 메모리 공간의 크기를 결정해야 함
  • 값을 참조할 때는 한 번에 읽어 들여야 할 메모리 공간의 크기를 알아야 함

-> 값의 데이터 타입에 따라 그 크기가 결정됨

e.g.

const score = 100;

JS 엔진은 숫자 타입의 값을 저장하기 위해 8바이트의 메모리 공간을 확보함
반대로 값을 참조할 때는, 변수에 할당된 값이 숫자 타입이므로 8바이트 단위로 메모리 공간에 저장된 값을 읽어 들임

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

  • 값의 데이터 타입에 따라, 메모리에서 읽어들인 2진수의 해석 방식이 결정됨

e.g. 2진수 01000001은 숫자로는 65, 문자열로는 'A'로 해석됨.
하지만 변수에 할당된 값이 숫자 타입의 값이라면 2진수는 숫자로 해석되게 됨


6.10 동적 타이핑

변수 타입이 선언이 아닌 할당 시점에 결정되고, 재할당을 통해 타입이 변화할 수 있는 것

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

  • 자바스크립트는 동적 타입 언어임

cf) 정적 타입 언어: 변수 선언 시점에 변수의 타입이 결정되고 이는 변경될 수 없음. 컴파일 시 타입 체크를 수행하기 때문에 런타임 시 에러가 줄어듦 e.g. C, C++, Java...

6.10.2 동적 타입 언어와 변수

  • 동적 타입 언어의 변수는 값을 확인하기 전에는 타입을 확신할 수 없기 때문에, 유연성은 높지만 신뢰성은 떨어짐

-> 1. 꼭 필요할 때에만 변수를 사용해야 함
2. 변수의 스코프를 최대한 좁게 만들어야 함
3. 전역변수는 의도치 않게 값이 변경될 가능성이 높으므로 사용을 자제해야 함
4. 변수보다는 상수를 사용함

0개의 댓글