zoukankan      html  css  js  c++  java
  • typeof 与 instanceof 检测数据类型的区别(初级)

    JS里面会用TypeOf与InstanceOf检测数据到底是什么类型的以及是否为空

    1.数据类型分为基本数据类型与复杂数据类型

            基本数据类型 String、Number、Boolean、Null、Undefined、Symbol 

            复杂数据类型 Object、Array、Function

    2.用Typeof分别对不同的数据类型进行检测下:

     Undefined  声明变量但未赋值

         var a;
         console.log(a) // undefined
         console.log(typeof a) // "undefined"

     Null  声明变量赋值为空

         var a = null;
         console.log(a) // null
         console.log(typeof a) // "object"  * 空对象的引用

           // 解决null比较:
           var a = null
           console.log(a == null) // true
           console.log(a === null) // true

     String 字符串类型

         var a = "a";
         console.log(a) // "a"
         console.log(typeof a) // "string"

      Number 数值类型

         var a = 1;
         console.log(a) // 1
         console.log(typeof a) //  "number"

     Boolean 布尔类型

         console.log(1=="1")  // true
         console.log(1==="1") // false

     Symbol  Symbol类型

         var a = Symbol()
         console.log(typeof a) // "symbol"

     Object   对象类型

         var a = {}
         console.log(typeof a) // "object"

     Function 函数类型

         var a = function(){}
         console.log(typeof a) // "function"

    Array  数组类型

         var a = []
         console.log(typeof a) // "Object"

    结论:

        Typeof在检测基本数据类型的时候除了null都会返回对应的基本数据类型

        Typeof检测复杂数据类型的时候除了function都会返回Object

    3.用instanceof检测的是原型,a instanceof b 表示a是否为b的实例

        console.log( [] instanceof Array);  //true
        console.log( {} instanceof Object); //true
        console.log( new Date() instanceof Date); //true
    
        function Person() { };
        console.log(new Person() instanceof Person); // true
    
        console.log([] instanceof Object);  //true
        console.log( new Date() instanceof Object);  //true
        console.log( new Person instanceof Object);  //true
    

    结论:

        instanceof 只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型。

        Array.isArray()方法判断这个值是不是数组的。

    推荐:

         Object.prototype.toString.call()

    由此可见,无论是typeof还是instanceof都不能准确判断出正确的类型,都需要进一步的加以判断。

  • 相关阅读:
    php的函数
    php字符串
    PDA触屏的终极解决办法
    数字万用表 选购指南
    WindowsXp Sp2 英文版
    访问局域网某台电脑时提示:无法访问,你可能没有权限使用网络资源.的解决办法
    中华人民共和国国家标准职工工伤与职业病致残程度鉴定
    删除所有设备驱动的批处理
    如何制作Win XP操作系统映像文件
    使用批处理和devcon.exe来控制 Windows 的设备
  • 原文地址:https://www.cnblogs.com/PengZhao-Mr/p/12705977.html
Copyright © 2011-2022 走看看