JS中判断变量类型的几种方法

88 阅读1分钟

js中变量的类型分为基本数据类型和引用数据类型

    基本数据类型有Numeber,String,Undefined,Null,Boolean,Symbol,BigInt
    
    引用数据类型有Object(Array,Function等)
复制代码

1.typeof判断数据类型:

    能够区分Numeber,String,,Boolean,Undefined,Symbol,BigInt,Object,Function
    typeof的注意事项:---返回值是字符串格式的;
                     ---typeof(NaN)-->"Number"
                     ---typeof未定义的变量不会报错,返回"undefined"
     
复制代码

QQ图片20220919194430.png

2.instanceof判断数据类型

    instanceof运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。(判断的是         引用类型)
    优点:能够区分Object,Function,Array
    缺点:Numeber,String,,Boolean不能区分
    
复制代码

QQ图片20220919193617.png

3.Object.prototype.toString.call()

    可以准确的判断变量的数据类型
    ECMA里规范定义了Object.prototype.toString的行为:首先,取得对象的一个内         部属性[[Class]],然后依据这个属性,返回一个类似于”[object Array]”的字符         串作为结果(看过ECMA标准的应该都知道,[[]]用来表示语言内部用到的、外部不         可直接访问的属性,称为“内部属性”)。利用这个方法,再配合call,我们可以取得         任何对象的内部属性[[Class]],然后把类型检测转化为字符串比较,以达到我们的         目的。
    
复制代码

QQ图片20220919192246.png

4. constructor

    对象实例的constructor指向对象自身
    例如obj.constructor == Object
    但是,undefined和null没有constructor,由于constructor属性是可以变更的,也会导致检测出的结果不正确。
    
复制代码

QQ图片20220919195212.png