관리 메뉴

bright jazz music

자바스크립트에서의 타입 확인 본문

Language/Javascript

자바스크립트에서의 타입 확인

bright jazz music 2024. 12. 3. 19:03

1. 스트링 타입의 타입확인

// 스트링 타입의 타입 확인
if (typeof val === "string" || val instanceof String) {...}

 

2. 객체 타입의 타입확인

// 순수객체 타입의 타입 확인
if (typeof val === "object" && // 객체 타입인지 확인
    val !== null &&           // null 제외 (typeof null도 "object"이기 때문)
    !Array.isArray(val))      // 배열 제외
{
    // 순수 객체인 경우의 처리
}
//...

const obj = { name: "Kim" };     // true
const arr = [1, 2, 3];          // false
const null_val = null;          // false
const date = new Date();        // true 
const regex = /test/;           // true

 

일반적으로는 이 방식을 사용하면 객체 타입을 확인해 낼 수 있다. 그러나 이 방식은 Date, RegExp 등의 내장 객체도 true로 판정된다. 만약 정말 순수한 객체만 판별해 내려면 constructor를 사용해 해당 객체가 순수 객체인지 확인할 수 있다.

if (typeof val === "object" && 
    val !== null && 
    !Array.isArray(val) && 
    val.constructor === Object)	// 이 조건이 하나 더 추가되었다.
{
    // 순수 객체만 처리
}

 

val.constructor === Object는 해당 객체가 Object 생성자 함수를 통해 만들어졌는지를 확인하는 것이다.

 

3. 숫자의 타입 확인

단순히 typeof value === "number"로는 숫자 확인이 끝나지 않는다. NaN도 숫자로 구분하기 때문이다. 따라서 아래와 같은 방법을 사용해 숫자를 판별해 낼 수 있다.

// 방법 1: NaN 체크 추가
if (typeof value === "number" && !isNaN(value)) {
    // 진짜 숫자인 경우
}

// 방법 2: Number.isFinite() 사용 (더 엄격한 방법)
if (Number.isFinite(value)) {
    // 진짜 숫자이면서 유한한 수인 경우
    // Infinity, -Infinity, NaN 모두 제외
}
Number.isFinite(123)      // true
Number.isFinite(-1.23)    // true
Number.isFinite(0)        // true
Number.isFinite(NaN)      // false
Number.isFinite(Infinity) // false
Number.isFinite("123")    // false (문자열은 자동 변환하지 않음)



'Language > Javascript' 카테고리의 다른 글

자바스크립트의 실행 컨텍스트  (0) 2024.11.13
자바스크립트와 메모리  (0) 2024.11.11
자바스크립트 기본 문법  (0) 2024.02.26
이벤트 루프와 비동기 통신  (0) 2024.01.03
클로저(closure)  (0) 2024.01.03
Comments