zoukankan      html  css  js  c++  java
  • JS 判断数据类型方法

    JS数据类型主要分为
    基本数据类型:UndefinedNullBooleanNumberString

    应用类型:ObjectArrayFunction

    类型判断

    1.对 boolean 类型的判断总结

    为false时:空字符串 '' 、undefined、0、NAN、null

    为true时:除上述false的情况都为true

    此判断会经常应用于判断一个变量是否有返回的if 语句中

    var o = { 
              'name':'lee'
            };
    var a = ['reg','blue'];
    function checkBoolean(a){
             if(a){
                  return true;
             }else{
                  return false;
             }
     }
    console.log(checkBoolean('')); //false
    console.log(checkBoolean(0)); //false
    console.log(checkBoolean(null)); //false
    console.log(checkBoolean(undefined)); //false
    console.log(checkBoolean(NaN)); //false
    console.log(checkBoolean(a));//true
    console.log(checkBoolean(c));//true

    2. typeof 

        var fn = function(n){
              console.log(n);
           }
           var str = 'string';
           var arr = [1,2,3];
           var obj = {
               a:123,
               b:456
           };
           var num = 1;
           var b = true;
           var n = null;       var u = undefined;
           //方法一使用typeof方法。
           console.log(typeof str);//string
           console.log(typeof arr);//object
           console.log(typeof obj);//object
           console.log(typeof num);//number
           console.log(typeof b);//boolean
           console.log(typeof n);//null是一个空的对象
           console.log(typeof u);//undefined
           console.log(typeof fn);//function

    typeof检测的Array和Object  结果都为object

    3.instanceof

    var o = { 
               'name':'lee'
             };
     var a = ['reg','blue'];
     console.log(o instanceof Object);// true
     console.log(a instanceof Array);//  true
     console.log(o instanceof Array);//  false

     console.log(a instanceof Object);// true  由于数组也属于对象因此我们使用instanceof判断一个数组是否为对象的时候结果也会是true

    instaceof只可以用来判断数组和对象,不能判断string和boolean类型

     下面为封装方法进行改进

    var o = { 
              'name':'lee'
            };
    var a = ['reg','blue'];
    var getDataType = function(o){
                if(o instanceof Array){
                    return 'Array'
                }else if( o instanceof Object ){
                    return 'Object';
                }else{
                    return 'param is no object type';
                }
           };
    console.log(getDataType(o));//Object。
    console.log(getDataType(a));//Array。

    4.constructor

    var o = { 
               'name':'lee'
            };
    var a = ['reg','blue'];
    console.log(o.constructor == Object);//true
    console.log(a.constructor == Array);//true

    此方法不能判断 null 和 undefined。

    5.tostring()

    var o = { 
              'name':'lee'
            };
    var a = ['reg','blue'];
    function c(name,age){
             this.name = name;
             this.age = age;
     }
    var c = new c('kingw','27');
    console.log(Object.prototype.toString.call(a));//[object Array]
    console.log(Object.prototype.toString.call(o));//[Object Object]
    console.log(Object.prototype.toString.call(c));//[Object Function]
    console.log(Object.prototype.toString.call(new c));//[Object Object]
     function isType(obj){ 
      var type = Object.prototype.toString.call(obj);
      if(type == '[object Array]'){
        return 'Array';
      }else if(type == '[object Object]'){
        return "Object" }
      else{
        return 'param is no object type'; }
     }
    console.log(isType(o));//Object console.log(isType(a));//Array

    //下面是更简洁的封装,来自vue源码
    var _toString = Object.prototype.toString;
    function toRawType (value) {return _toString.call(value).slice(8, -1)}

    6.JQ 的isPlainObject();.isPlainObject();.isArray(obj);$.isFunction(obj)进行判断。

  • 相关阅读:
    MySQL用户权限管理
    索引 聚集索引 唯一索引 普通索引 联合索引 覆盖索引
    sql注入
    pymysql
    MySQL 多表查询
    MySQL 聚合函数以及 优先级
    mysql 语句 字段 和结构主键外键的增删改
    协程
    事件 event
    进程池和线程池 concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
  • 原文地址:https://www.cnblogs.com/benbonben/p/15353992.html
Copyright © 2011-2022 走看看