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

  • 相关阅读:
    简时——Beta冲刺 Day04
    简时——Beta冲刺 Day03
    简时——Beta冲刺 Day02
    SE_WorkX_提问回顾与个人总结
    通过SQL注入获得网站后台用户密码
    缓冲区溢出攻击与防范
    Pytorch_Part7_模型使用
    Pytorch_Part5_迭代训练
    Pytorch_Part2_数据模块
    Pytorch_Part1_简介&张量
  • 原文地址:https://www.cnblogs.com/PengZhao-Mr/p/12705977.html
Copyright © 2011-2022 走看看