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都不能准确判断出正确的类型,都需要进一步的加以判断。

  • 相关阅读:
    推荐系统中的策略与算法互补
    思考:数据结构与算法:
    思考:代码中什么是关联?什么情形才会关联?怎么实现关联?
    思考:高并发(通用的成熟的)解决思想
    思考:学习一个知识后如何对自己进行测试?如何出题呢?
    不要小看用的好用的熟,因为这需要更好的理解和应用
    打了好久五笔,速度提不起来怎么办?
    学习 APPIUM 元素定位 (JAVA)-xpath
    appium 元素定位方法
    uiautomatorviewer 定位提示Error obtaining UI hierarchy
  • 原文地址:https://www.cnblogs.com/PengZhao-Mr/p/12705977.html
Copyright © 2011-2022 走看看