← 글 목록

notes

06장. 데이터 타입

모던 JS Deep Dive — 데이터 타입별 값·변환·동작 특성 핵심 정리.

참고: 이웅모 《모던 자바스크립트 Deep Dive》 06장 · [MDN Data structures](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures)

typeof를 치며 “숫자인데 소수/정수 구분이 없네”에 놀랐다. JS 타입은 원시(number/string/boolean/undefined/null/symbol/bigint)와 객체로 나뉜다. 이 장이 그 목록이다.

flowchart TB
  T[타입] --> P[원시]
  T --> O[객체]
  P --> N[number]
  P --> S[string]
  P --> B[boolean]
  P --> U[undefined]
  P --> NL[null]
  P --> SY[symbol]
  P --> BI[bigint]

6.1 숫자

IEEE 754 배정밀도. NaN, Infinity. 정수 리터럴·소수·지수·bigint는 별타입.

console.log(0.1 + 0.2);
console.log(Number.MAX_SAFE_INTEGER);

6.2 문자열

유니코드. 불변. ', ", 템플릿 ` ``.

6.3 템플릿 리터럴

멀티라인·${expr} 삽입·태그드 템플릿.

const name = '민섭';
console.log(`hi ${name}`);

6.4 불리언

true/false. 조건 문맥의 truthy/falsy는 9장.

6.5 undefined

선언 후 미할당, 없는 프로퍼티, 반환 없는 함수. 의도로 undefined 할당은 비추.

6.6 null

의도적 빈 값. typeof null === 'object' 함정.

6.7 심벌

유일한 값. Symbol('desc'). 객체 키로 충돌 방지(33).

6.8 객체 타입

원시 제외 전부 — 배열·함수·날짜·정규식·일반 객체.

6.9 타입이 필요한 이유

메모리 해석·연산 가능 여부·엔진 최적화. 동적 타입이지만 값의 종류는 여전히 있다.

console.log(typeof 1, typeof 'a', typeof null, typeof []);

예제

function abs(n) {
  if (typeof n !== 'number' || Number.isNaN(n)) throw new TypeError('number required');
  return Math.abs(n);
}

헷갈리던 장면 / 함정

  • typeof null
  • typeof 배열 = object
  • NaN은 number
  • 문자열 불변인데 += 되는 것처럼 보이는 이유(새 문자열)

표

질문 → 자답

Q. 정적 타입 없이 어떻게? A. 관례·JSDoc·TypeScript·런타임 가드.

Q. bigint는 언제? A. 안전 정수 밖. JSON 주의.

웹 보강 메모

MDN Data structures. Object.prototype.toString.call로 더 정밀한 태그 확인.

실무로 바로

  • 입력 가드 typeof + isFinite
  • null vs undefined 팀 규칙
  • 표시 문자열은 템플릿

여기서 잠깐 💁‍♂️

7장 연산자 — 타입 위에서 값을 결합한다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.