会更快更好更快

照着大佬的自己打印了一遍,加深一下印象

原文链接:js判断数据类型常用的6种方法_Clara_G的博客-CSDN博客_js判断数据类型

1.typeof(一般判断基本数据类型用这个方法)

js数据类型:JS基础篇1:数据类型(8种)_1363648943的专栏-CSDN博客_js数据类型

打印结果:

     console.log(typeof "helloworld")      -------->"string"     
     console.log(typeof 123)               -------->"number"
     console.log(typeof [1, 2, 3])         -------->"object"
     console.log(typeof new Function())    -------->"function"
     console.log(typeof new Date())        -------->"object"
     console.log(typeof new RegExp())      -------->"object"
     console.log(typeof Symbol())          -------->"symbol"
     console.log(typeof true)              -------->"boolean"
     console.log(typeof null)              -------->"object"
     console.log(typeof undefined)         -------->"undefined"
     console.log(typeof 'undefined')       -------->"string"

注意:打印的结果都是以字符串呈现

2.instance of()

    console.log([1, 2] instanceof Array)               ---->"true"
    console.log(new Function() instanceof Function);   ---->"true"
    console.log(new Date() instanceof Date);           ---->"true"

注意:这个方法判定函数我没有理解到,自己去找资料看

3. Object.prototype.toString.call(万金油,哪里都可以用)

    console.log(Object.prototype.toString.call("123"))              //-------->[object String]
    console.log(Object.prototype.toString.call(123))                //-------->[object Number]
    console.log(Object.prototype.toString.call(true))               //-------->[object Boolean]
    console.log(Object.prototype.toString.call([1, 2, 3]))          //-------->[object Array]
    console.log(Object.prototype.toString.call(null))               //-------->[object Null]
    console.log(Object.prototype.toString.call(undefined))          //-------->[object Undefined]
    console.log(Object.prototype.toString.call({ name: 'Hello' }))  //-------->[object Object]
    console.log(Object.prototype.toString.call(function () { }))    //-------->[object Function]
    console.log(Object.prototype.toString.call(new Date()))         //-------->[object Date]
    console.log(Object.prototype.toString.call(/\d/))               //-------->[object RegExp]
    console.log(Object.prototype.toString.call(Symbol()))           //-------->[object Symbol]

注意:注意区分大小写. toString方法,在Object原型上返回数据格式

4. constructor()

    //注意当出现继承的时候,使用constructor会出现问题
    function A() {};
 
    function B() {};
    A.prototype = new B(); //A继承自B
    console.log(A.constructor === B)  -------->false
    var C = new A();
    //现在开始判断C是否跟A的构造器一样
    console.log(C.constructor === B)  -------->true
    console.log(C.constructor === A)  -------->false 
    //解决这种情况,通常是手动调整对象的constructor指向
    C.constructor = A; //将自己的类赋值给对象的constructor属性
    console.log(C.constructor === A);  -------->true
    console.log(C.constructor === B);  -------->false

注意:null和undefined没有constructor;判断数字时使用(),比如  (123).constructor,如果写成123.constructor会报错,constructor在类继承时会出错,因为Object被覆盖掉了,检测结果就不对了

5.  jquery.type(万能法)

    console.log(jQuery.type(undefined) === "undefined")           -------->true
    console.log(jQuery.type() === "undefined");                   -------->true
    console.log(jQuery.type(window.notDefined) === "undefined")   -------->true
    console.log(jQuery.type(123) === "number")                    -------->true
    console.log(jQuery.type('123') === "string")                  -------->true
    console.log(jQuery.type([]) === "array")                      -------->true
    console.log(jQuery.type(true) === "boolean")                  -------->true
    console.log(jQuery.type(function(){}) === "function")         -------->true
    console.log(jQuery.type(new Date()) === "date")               -------->true
    console.log(jQuery.type(/\d/) === "regexp")                   -------->true
    console.log(jQuery.type(new Error()) === "error")             -------->true 
    console.log(jQuery.type({name:'Hello'}) === "object")         ------->true
    console.log(jQuery.type(Symbol()) === "symbol")               ------->true
                                                        ------->其余对象类型一般返回object
 

注意:在使用时,一定要引入jquery文件,不然会报错,jQuery is not defined

5.  严格运算符===

通常===出现在我们的条件判断中,比如判断一个变量是否为空

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐