zoukankan      html  css  js  c++  java
  • JavaScript数据类型判断

    1. JavaScript数据类型

    基本数据类型:null, undefined, boolean, number, string, symbol
    引用数据类型:Object(包含Function, Date, Array, RegExp, Error, Arguments等)
    基本数据类型存放于栈内存中,引用数据类型在栈内存和堆内存中均有,其中栈中存储了指针,指向堆中该实体的起始位置,当访问引用数据类型时,会首先在栈内存中查找器指针,然后到堆中获得实体

    2. 判断数据类型

    typeof instanceof constructor Object.prototype.toString.call()
    对于对象来说,除了函数之外,其余对象的typeof都会返回object

    typeof [] // object
    typeof function(){} // function
    typeof null // object
    

    instanceof也可以用来判断对象的数据类型,但是不能判断基本数据类型

    [] instanceof Array
    function(){} instanceof Function
    {} instanceof Object
    

    constructor可以判断基本数据类型和引用数据类型的类型

    (2).constructor === Number;
    (true).constructor === Boolean;
    ('str').constructor === String;
    ([]).constructor === Array;
    (function(){}).constructor === Function;
    ({}).constructor === Object;
    (/abc/).constructor === RegExp;
    (new Date()).constructor === Date;
    

    Object.prototype.toString.call也可以用来判断类型,也是开发中运用最多的一种

    var toString=Object.prototype.toString;
    console.log(toString.call(und));  // [object Undefined]
    console.log(toString.call(nul));  // [object Null]
    console.log(toString.call(boo));  // [object Boolean]
    console.log(toString.call(num));  // [object Number]
    console.log(toString.call(str));  // [object String]
    console.log(toString.call(obj));  // [object Object]
    console.log(toString.call(arr));  // [object Array]
    console.log(toString.call(fun));  // [object Function]
    console.log(toString.call(date));  // [object Date]
    console.log(toString.call(reg));  // [object RegExp]
    console.log(toString.call(err));  // [object Error]
    console.log(toString.call(arg));  // [object Arguments]
    

    结合typeof和Object.prototype.toString.call我们也可以实现一个通用的类型监测

    function type(obj) {
      return typeof obj !== "object"
        ? typeof obj
        : Object.prototype.toString
            .call(obj)
            .slice(8, -1)
            .toLowerCase();
    }
    console.log(type({})); // object
    console.log(type([])); // array
    console.log(type(function(){})); // function
    console.log(type(1)); // number
    
  • 相关阅读:
    JavaSript数组扁平化去重
    宝塔面板忘记登陆账号和密码怎么办
    宝塔shell脚本执行thinkphp命令行
    laravel设置中国时区
    Laravel-admin左侧菜单栏怎么默认展开打开
    install.sh: 115: install.sh: Syntax error: "(" unexpected (expecting "}")
    git生成密钥
    git 忽略提交某个指定的文件(不从版本库中删除)
    larael-admin汉化配置中文
    Nginx PHP-Fcgi中因PHP执行时间导致504无限循环中断
  • 原文地址:https://www.cnblogs.com/guolizhi/p/13355759.html
Copyright © 2011-2022 走看看