JavaScript에서 데이터 유형을 판단하는 4가지 방법

본고는 네 가지 방법으로 js 데이터 유형을 판단하는데 여기에 그들 간의 차이를 기록한다. 그것이 바로 typeof 연산자, instanceof 연산자,constructor 속성,Object이다.prototype.toString 방법.
1. typeof를 사용하여 데이터 유형을 판단한다

console.log('  Number ->', typeof 1); // number
console.log('  Boolean ->', typeof true); // boolean
console.log('  String ->', typeof ''); // string
console.log('  null ->', typeof null); // object
console.log('  undefined ->', typeof undefined); // undefined
console.log('  NaN ->', typeof NaN); // number
console.log('  function ->', typeof function () { }); // function
console.log('  Object ->', typeof {}); // object
console.log('  Array ->', typeof []); // object
console.log('  Date ->', typeof new Date()); // object
console.log('  Error ->', typeof new Error()); // object
console.log('  RegExp ->', typeof new RegExp()); // object
console.log('  Symbol ->', typeof Symbol()); // symbol
console.log('  Map ->', typeof new Map()); // object
console.log('  Set ->', typeof new Set()); // object
콘솔 출력은 다음과 같습니다.
테스트 Number -> number
테스트 Boolean -> boolean
테스트 String -> string
테스트 null -> object
테스트 undefined -> undefined
테스트 NaN -> number
테스트 기능 -> 기능
테스트 오브젝트 -> 오브젝트
테스트 Array -> object
테스트 날짜-> object
테스트 Error -> object
테스트 RegExp -> object
테스트 Symbol -> symbol
테스트 맵 -> object
테스트 Set -> object
요약:
1. typeof는 판단만 가능합니다.
  • String(string으로 돌아가기),
  • Number(number 반환),
  • Boolean(boolean으로 돌아가기),
  • undefined(undefined로 돌아가기)
  • function(function으로 돌아가기),
  • Symbol(symbol로 돌아가기)
  • 2. new로 구성된 것은 모두object로 되돌아온다
    3. Object와 Array는 모두 Object로 되돌아간다
    2. instanceof를 사용하여 데이터 유형을 판단한다
    
    console.log('  Number ->', 1 instanceof Number); // false
    console.log('  Boolean ->', true instanceof Boolean); // false
    console.log('  String ->', '' instanceof String); // false
    // console.log('  null ->', null instanceof null); // TypeError: Cannot read property 'constructor' of null
    // console.log('  undefined ->', undefined instanceof undefined); // TypeError: Cannot read property 'constructor' of undefined
    console.log('  NaN ->', NaN instanceof Number); // false
    console.log('  function ->', function () { } instanceof Function); // true
    console.log('  Object ->', {} instanceof Object); // true
    console.log('  Array ->', [] instanceof Array); // true
    console.log('  Date ->', new Date() instanceof Date); // true
    console.log('  Error ->', new Error() instanceof Error); // true
    console.log('  RegExp ->', new RegExp() instanceof RegExp); // true
    console.log('  Symbol ->', Symbol() instanceof Symbol); // false
    console.log('  Map ->', new Map() instanceof Map); // true
    console.log('  Set ->', new Set() instanceof Set); // true
    
    console.log('  new Number ->', new Number(1) instanceof Number); // true
    console.log('  new Boolean ->', new Boolean(true) instanceof Boolean); // true
    console.log('  new String ->', new String('') instanceof String); // true
    콘솔 출력은 다음과 같습니다.
    테스트 Number -> false
    테스트 Boolean -> false
    테스트 String -> false
    테스트 NaN -> false
    테스트 기능 ->true
    테스트 Object -> true
    테스트 Array -> true
    테스트 날짜 -> true
    테스트 오류 -> true
    테스트 RegExp -> true
    테스트 Symbol -> false
    테스트 맵->true
    테스트 세트 -> true
    new Number 테스트 -> true
    테스트 new Boolean -> true
    new String 테스트 -> true
    요약:
    1、null,undefined 판단불가
    2. 기본 데이터 유형 Number, String, Boolean은 판단할 수 없음
    3. instanceof는 대상이 특정한 데이터 형식인지 아닌지를 판단하는 실례로
    상례에서 1,true,'실례가 아니기 때문에false로 판단
    3. constructor를 사용하여 데이터 유형을 판단한다
    
    console.log('  Number ->', (1).constructor === Number); // true
    console.log('  Boolean ->', true.constructor === Boolean); // true
    console.log('  String ->', ''.constructor === String); // true
    // console.log('  null ->', null.constructor === null); // TypeError: Cannot read property 'constructor' of null
    // console.log('  undefined ->', undefined.constructor); // TypeError: Cannot read property 'constructor' of undefined
    console.log('  NaN ->', NaN.constructor === Number); // true  :NaN infinity Number 
    console.log('  function ->', function () { }.constructor === Function); // true
    console.log('  Object ->', {}.constructor === Object); // true
    console.log('  Array ->', [].constructor === Array); // true
    console.log('  Date ->', new Date().constructor === Date); // true
    console.log('  Error ->', new Error().constructor === Error); // true
    console.log('  RegExp ->', new RegExp().constructor === RegExp); // true
    console.log('  Symbol ->', Symbol().constructor === Symbol); // true
    console.log('  Map ->', new Map().constructor === Map); // true
    console.log('  Set ->', new Set().constructor === Set); // true
    콘솔 출력은 다음과 같습니다.
    테스트 Number -> true
    테스트 Boolean -> true
    테스트 String -> true
    테스트 NaN -> true
    테스트 기능 ->true
    테스트 Object -> true
    테스트 Array -> true
    테스트 날짜 -> true
    테스트 오류 -> true
    테스트 RegExp -> true
    테스트 Symbol -> true
    테스트 맵->true
    테스트 세트 -> true
    요약:
    null, undefined, 다른 건 다 괜찮아요.
    넷째, Object를 사용합니다.prototype.toString 데이터 유형 판단
    
    console.log('  Number ->', Object.prototype.toString.call(1)); // [object Number]
    console.log('  Boolean ->', Object.prototype.toString.call(true)); // [object Boolean]
    console.log('  String ->', Object.prototype.toString.call('')); // [object String]
    console.log('  null ->', Object.prototype.toString.call(null)); // [object Null]
    console.log('  undefined ->', Object.prototype.toString.call(undefined)); // [object Undefined]
    console.log('  NaN ->', Object.prototype.toString.call(NaN)); // [object Number]
    console.log('  function ->', Object.prototype.toString.call(function () { })); // [object Function]
    console.log('  Object ->', Object.prototype.toString.call({})); // [object Object]
    console.log('  Array ->', Object.prototype.toString.call([])); // [object Array]
    console.log('  Date ->', Object.prototype.toString.call(new Date())); // [object Date]
    console.log('  Error ->', Object.prototype.toString.call(new Error())); // [object Error]
    console.log('  RegExp ->', Object.prototype.toString.call(new RegExp())); // [object RegExp]
    console.log('  Symbol ->', Object.prototype.toString.call(Symbol())); // [object Symbol]
    console.log('  Map ->', Object.prototype.toString.call(new Map())); // [object Map]
    console.log('  Set ->', Object.prototype.toString.call(new Set())); // [object Set]
    콘솔 출력은 다음과 같습니다.
    Number 테스트 -> [object Number]
    테스트 Boolean -> [object Boolean]
    테스트 String -> [object String]
    테스트 null -> [object Null]
    테스트 undefined -> [object Undefined]
    테스트 NaN -> [object Number]
    테스트 기능 -> [object Function]
    테스트 Object -> [object Object]
    Array 테스트 -> [object Array]
    테스트 날짜 -> [object 날짜]
    테스트 Error -> [object Error]
    테스트 RegExp -> [object RegExp]
    테스트 Symbol -> [object Symbol]
    테스트 맵 -> [object Map]
    테스트 Set -> [object Set]
    요약:
    현재 가장 완벽한 데이터 유형 판단 방법
    결어: 이상은 필자의 테스트와 총결이다.만약 잘못되었거나 불완전한 곳이 있다면, 여러분의 낡은 철의 시정을 환영합니다.
    이상은 자바스크립트가 데이터 유형을 판단하는 4가지 방법의 상세한 내용입니다. 자바스크립트가 데이터 유형을 판단하는 것에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기