what is the best way to check variable type in javascript

后端 未结 6 799
天涯浪人
天涯浪人 2020-12-15 22:41


        
6条回答
  •  猫巷女王i
    2020-12-15 23:19

    ES-Next version with support BigInt & Symbol

    
    "use strict";
    
    /**
     *
     * @author xgqfrms
     * @license MIT
     * @copyright xgqfrms
     * @created 2020-06-09
     * @modified
     *
     * @description js data type checker
     * @augments
     * @example
     * @link
     *
     */
    
    
    const dataTypeChecker = (data, debug = false) => {
      const log = console.log;
      let result = ``;
      const typeString = Object.prototype.toString.call(data);
      result = typeString.replace(/\[object /gi, ``).replace(/\]/gi, ``);
      if(debug) {
        log(`true type`, result)
      }
      return result;
    };
    
    
    
    export default dataTypeChecker;
    
    export {
      dataTypeChecker,
    };
    
    

    test

    const dataTypeChecker = (data, debug = false) => {
      const log = console.log;
      let result = ``;
      const typeString = Object.prototype.toString.call(data);
      // const typeString = Object.prototype.toString.apply(data);
      result = typeString.replace(/\[object /gi, ``).replace(/\]/gi, ``);
      if(!debug) {
        log(`true type`, result)
      }
      return result;
    };
    
    
    
    const obj = {};
    const func = () => {};
    
    
    dataTypeChecker(NaN)
    //"[object Number]"
    dataTypeChecker(undefined)
    //"[object Undefined]"
    dataTypeChecker(true)
    //"[object Boolean]"
    dataTypeChecker({})
    //"[object Object]"
    dataTypeChecker(func)
    //"[object Function]"
    dataTypeChecker(obj)
    //"[object Object]"
    dataTypeChecker(Symbol())
    //"[object Symbol]"
    dataTypeChecker(null)
    //"[object Null]"
    dataTypeChecker(123)
    //"[object Number]"
    dataTypeChecker(BigInt(1n))
    //"[object BigInt]"
    
    
    // true type Number
    // true type Undefined
    // true type Boolean
    // true type Object
    // true type Function
    // true type Object
    // true type Symbol
    // true type Null
    // true type Number
    // true type BigInt

提交回复
热议问题