Infra/JavaScript

Javascript 데이터 유형 확인 방법

Hyeon Gu 2024. 4. 25. 00:07

아래는 자바스크립트에서 변수 타입 체크를 위한 코드 예제입니다.

  1. undeclared, undefined, null 체크
  • undeclared : **try-catch-finally**을 사용하여 해당 변수가 선언되지 않은 경우를 확인할 수 있습니다.
try {
  var; // 여기서 사용해야 합니다.
} catch (e) {
  if (e.name === "ReferenceError") {
    console.log("var is undeclared");
  }
}
  • undefined : typeof 연산자를 사용하여 변수가 undefined인지 확인할 수 있습니다.
var undefinedVar;

if (typeof undefinedVar === "undefined") {
  console.log("var is undefined");
}
  • null : 변수가 **null**인지 확인하기 위해 if 문을 사용합니다.
var nullVar = null;

if (nullVar === null) {
  console.log("var is null");
}
  1. String 체크
  • 세 가지 방법으로 문자열을 생성할 수 있으며, typeof 연산자와 instanceof 연산자를 사용하여 변수가 문자열인지 확인할 수 있습니다.
// String
let var1 = "1";
// String
let var2 = String(1);
// [object String]
let var3 = new String(1);

// primitive string
// String object
if (typeof var1 === "string" || var1 instanceof String) {
  console.log("var1 is a string");
}

// primitive string
// String object
if (typeof var2 === "string" || var2 instanceof String) {
  console.log("var2 is a string");
}

// primitive string
// String object
if (typeof var3 === "string" || var3 instanceof String) {
  console.log("var3 is a string");
}
  1. Number 체크
  • typeof 연산자와 instanceof 연산자를 사용하여 변수가 숫자인지 확인할 수 있습니다. 또한, isFinite() 함수를 사용하여 유한한 숫자인지 확인할 수 있습니다. **NaN**의 경우 isNaN() 함수 또는 Number.isNaN() 함수를 사용하여 확인할 수 있습니다.
// 초기의 string
// String 오브젝트
// 'NaN'이 아니어야 합니다.
if ( typeof var === 'number' || value instanceof var ) && isFinite(var) )

NaN

// 1. 모든 비숫자에 대해 참을 반환합니다.
isNaN(var)

// 2. 'NaN'에 대해서만 참이 됩니다.
Number.isNaN(var)

위 내용은 Number(숫자)와 관련된 체크 방법입니다.

숫자 체크는 **typeof**를 사용해서 체크할 수 있습니다. **typeof**로 숫자를 체크할 때는 **NaN**도 **number**로 판단하게 됩니다. **NaN**은 숫자가 아니므로 **isFinite()**로 검사해줘야 합니다.

**NaN**을 체크하는 방법은 **isNaN()**과 Number.isNaN() 두 가지가 있습니다. **isNaN()**은 모든 비숫자에 대해 참을 반환하므로 **Number.isNaN()**을 사용하는 것이 더욱 정확합니다.

예시를 살펴보겠습니다.

let num = '123';

if (typeof num === 'number' || num instanceof Number && isFinite(num)) {
  console.log('num is a valid number');
} else {
  console.log('num is not a valid number');
}
// output: num is not a valid number

let nan = NaN;

if (isNaN(nan)) {
  console.log('nan is NaN');
} else {
  console.log('nan is not NaN');
}
// output: nan is NaN

let nan2 = 'NaN';

if (isNaN(nan2)) {
  console.log('nan2 is NaN');
} else {
  console.log('nan2 is not NaN');
}
// output: nan2 is NaN

let nan3 = NaN;

if (Number.isNaN(nan3)) {
  console.log('nan3 is NaN');
} else {
  console.log('nan3 is not NaN');
}
// output: nan3 is NaN