首页 > Web开发 > 详细

js判断数据类型

时间:2020-01-08 15:26:12      阅读:87      评论:0      收藏:0      [点我收藏+]

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]
 

js判断数据类型

原文:https://www.cnblogs.com/littlechen/p/12165985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!