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