js判断数据类型

喜你入骨 提交于 2020-01-08 13:43:26

ECMAScript 中的数据类型

  6种简单数据类型:Undefined, Null, Number, String, Boolean, Symbol

  1种复杂数据类型(其中又可以分为几类):Object, Array, Date, RegExp, Function, 自定义类型

判断数据类型

  1.typeof

  typeof是检测简单数据类型的最好选择。

    var bool = true
    var num = 1
    var str = 'a'
    var und = undefined
    var nul = null
    var arr = [1,2,3]
    var obj = {}    var dat = new Date()
    var fun = function(){}
    var reg = new RegExp()

    console.log(typeof bool); //boolean
    console.log(typeof num); //number
    console.log(typeof str); //string
    console.log(typeof und); //undefined
    console.log(typeof nul); //object
    console.log(typeof arr); //object
    console.log(typeof obj); //object    console.log(typeof dat); //object    console.log(typeof reg); //object         console.log(typeof fun); //function               通过上面的结果可以看出,检测null时返回的是object, 所以在检测简单数据类型时,typeof完全可以适用。但是检测复杂数据类型时,除了检测function时能返回function,其它复杂类型返回的都是object,无法区分。 

  2.instanceof

  如果你想知道对象是不是你想检测的某种复杂类型,可以使用instanceof,自定义的类型可以用这个。

  console.log(reg instanceof Object); //true
  console.log(reg instanceof RegExp); //true  所用引用类型的值都是Object的实例,所以返回true

  3.constructor

  console.log(bool.constructor === Boolean);// true
  console.log(num.constructor === Number);// true
  console.log(str.constructor === String);// true
  console.log(arr.constructor === Array);// true  console.log(dat.constructor === Date);// true  console.log(obj.constructor === Object);// true     console.log(fun.constructor === Function);// true   console.log(reg.constructor === RegExp);// true
  undefined和null没有contructor属性,constructor不能判断undefined和null

  4.Object.prototype.toString.call

  全面检测的最好方法

  console.log(Object.prototype.toString.call(bool));//[object Boolean]
  console.log(Object.prototype.toString.call(num));//[object Number]
  console.log(Object.prototype.toString.call(str));//[object String]
  console.log(Object.prototype.toString.call(und));//[object Undefined]
  console.log(Object.prototype.toString.call(nul));//[object Null]
  console.log(Object.prototype.toString.call(arr));//[object Array]  console.log(Object.prototype.toString.call(dat));//[object Date]
  console.log(Object.prototype.toString.call(obj));//[object Object]
  console.log(Object.prototype.toString.call(fun));//[object Function]  console.log(Object.prototype.toString.call(reg));//[object RegExp]
 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!