Programing/javascript

자바스크립트의 데이터 타입 완전 정복 (typeof, null, undefined)

2025. 4. 23. 11:14
반응형

자바스크립트를 다루다 보면 typeof, null, undefined의 개념에서 헷갈리는 경우가 많습니다. 특히 예상과 다른 결과값이나 데이터 타입 판별 문제로 디버깅이 어려울 때가 있죠. 이 글에서는 자바스크립트의 기본 데이터 타입을 정확하게 이해하고, typeof, null, undefined를 명확히 구분하는 방법을 정리해보겠습니다.


✨ 자바스크립트의 기본 데이터 타입

자바스크립트의 데이터 타입은 크게 원시 타입과 참조 타입으로 나뉩니다.

✅ 원시 타입 (Primitive Types)

  • string: 문자열 → 'hello', "abc"
  • number: 숫자 → 10, 3.14, NaN
  • boolean: 참/거짓 → true, false
  • undefined: 값이 할당되지 않은 변수
  • null: 값이 "없음"을 명시
  • bigint: 큰 정수 (ES2020 도입)
  • symbol: 고유한 식별자 (ES6 도입)

✅ 참조 타입 (Reference Types)

  • object: 배열, 객체, 함수 등

🔍 typeof 연산자란?

typeof는 변수의 타입을 문자열로 반환합니다.

typeof "hello"     // "string"
typeof 123          // "number"
typeof true         // "boolean"
typeof undefined    // "undefined"
typeof null         // ❗ "object" ← 주의!
typeof {}           // "object"
typeof []           // "object"
typeof function(){} // "function"

⚠️ typeof null === "object"가 되는 이유

  • 이는 자바스크립트의 초기 설계 실수로, 오랫동안 호환성을 위해 그대로 유지되고 있습니다.
  • null은 실제로 원시 타입이지만, typeof로는 "object"로 판별되므로 주의가 필요합니다.

🔍 undefined vs null

구분 의미 typeof 결과
undefined 값이 할당되지 않음 "undefined"
null 일부러 "없음"을 명시한 상태 "object" (주의)

예시:

let a;
console.log(a);         // undefined

let b = null;
console.log(typeof b);  // "object"

🧪 typeof 한눈에 보기

typeof 42              // "number"
typeof "hello"         // "string"
typeof true            // "boolean"
typeof undefined       // "undefined"
typeof null            // "object" ❗
typeof {}              // "object"
typeof []              // "object"
typeof Symbol()        // "symbol"
typeof BigInt(123)     // "bigint"
typeof function(){}    // "function"

✅ 정리

  • typeof는 유용하지만 null과 array를 구분하는 데 한계가 있습니다.
  • 배열인지 여부는 Array.isArray()를 사용하는 것이 정확합니다.
  • undefined는 기본적으로 "값이 없다", null은 "명시적으로 없다"는 의미를 구분하여 사용해야 합니다.
반응형

'Programing > javascript' 카테고리의 다른 글

자바스크립트 클로저(Closure)의 개념과 실전 활용 예제  (0) 2025.04.24
자바스크립트 비동기 처리 개념 정리(setTimeout, Promise, async/await)  (0) 2025.04.23
자바스크립트 this 키워드 제대로 이해하기 (함수 / 객체 / 클래스에서)  (0) 2025.04.23
자바스크립트 == vs === 비교 연산자의 차이와 올바른 사용법  (0) 2025.04.23
자바스크립트의 var, let, const 차이와 올바른 사용법  (0) 2025.04.23
javascript 비밀번호 유효성 검사  (0) 2025.04.22
javascript 이메일 유효성 검사  (0) 2025.04.22
국가별 여권번호 유효성 검사  (0) 2025.04.22
'Programing/javascript' 카테고리의 다른 글
  • 자바스크립트 this 키워드 제대로 이해하기 (함수 / 객체 / 클래스에서)
  • 자바스크립트 == vs === 비교 연산자의 차이와 올바른 사용법
  • 자바스크립트의 var, let, const 차이와 올바른 사용법
  • javascript 비밀번호 유효성 검사
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (478) N
      • 금융 (61)
      • Programing (295) N
        • Algorithm (39)
        • API (2)
        • javascript (122)
        • CSS (8)
        • HTML (10)
        • PHP (15)
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (21) N
        • MS-SQL (1)
        • MySQL (13)
        • 보안 (5)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (6)
      • IT 일반 (15)
      • 리뷰 (38)
        • Book (17)
        • 제품 (2)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (36)
        • 회고 (3)
        • 컬럼 (4)
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    IT블로그
    SQL
    위시리스트
    php
    블로그
    사고 싶은 책
    읽고 싶은 책
    기초
    iT's MY LiFE
    자바스크립트유틸
    자바스크립트
    자바
    디자인패턴
    js패턴
    IT·컴퓨터
    JavaScript
    It
    Java
    IT 관련
    jsp
Dongkkase
자바스크립트의 데이터 타입 완전 정복 (typeof, null, undefined)
상단으로

티스토리툴바