美文网首页
判断JS数据类型的四种方法(待完善)

判断JS数据类型的四种方法(待完善)

作者: Yin先生 | 来源:发表于2020-04-07 21:44 被阅读0次

    在 ECMAScript 规范中,共定义了 7 种数据类型,分为 基本类型 和 引用类型 两大类,如下所示:

    基本类型:String、Number、Boolean、Symbol、Undefined、Null
    引用类型:Object、Function 、Array、RegExp、Date

    基本类型也称为简单类型,由于其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈中,即按值访问。

    引用类型也称为复杂类型,由于其值的大小会改变,所以不能将其存放在栈中,否则会降低变量查询速度,因此,其值存储在堆(heap)中,而存储在变量处的值,是一个指针,指向存储对象的内存处,即按址访问。

    鉴于 ECMAScript 是松散类型的,因此需要有一种手段来检测给定变量的数据类型。对于这个问题,JavaScript 也提供了多种方法,但遗憾的是,不同的方法得到的结果参差不齐。

    下面介绍常用的4种方法,并对各个方法存在的问题进行简单的分析。

    1、typeof

    typeof 是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型。返回的结果用该类型的字符串(全小写字母)形式表示,包括以下 7 种:number、boolean、symbol、string、object、undefined、function 等。

    typeof ''; // string 有效
    typeof 1; // number 有效
    typeof Symbol(); // symbol 有效
    typeof true; //boolean 有效
    typeof undefined; //undefined 有效
    typeof null; //object 无效
    typeof [] ; //object 无效
    typeof new Function(); // function 有效
    typeof new Date(); //object 无效
    typeof new RegExp(); //object 无效
    

    有些时候,typeof 操作符会返回一些令人迷惑但技术上却正确的值:
    对于基本类型,除 null 以外,均可以返回正确的结果。
    对于引用类型,除 function 以外,一律返回 object 类型。
    对于 null ,返回 object 类型。
    对于 function 返回 function 类型。
    其中,null 有属于自己的数据类型 Null , 引用类型中的 数组、日期、正则 也都有属于自己的具体类型,而 typeof 对于这些类型的处理,只返回了处于其原型链最顶端的 Object 类型,没有错,但不是我们想要的结果。

    待完善

    相关文章

      网友评论

          本文标题:判断JS数据类型的四种方法(待完善)

          本文链接:https://www.haomeiwen.com/subject/pcuophtx.html