常用数据类型判断

1、判断数据类型首先要知道都有哪些数据类型。

数据类型

第一种、typeof

语法:

    // 简单数据类型
    console.log(typeof 1) // number
    console.log(typeof "s") // string
    console.log(typeof true) //boolean
    console.log(typeof null) //object
    console.log(typeof undefined) // undefined
    // 引用数据类型
    console.log(typeof {})  // object
    console.log(typeof [])  // object
    console.log(typeof /^123$/) //object
    console.log(typeof function () {}) //function
    console.log(typeof new Date());// object

判断一个变量是什么类型的。
注意:尽量用来判断简单数据类型,除了null,null判断出来是object,判断引用类型的除了function都会返回object

第二种、instanceof

语法:

    // 简单数据类型
    console.log(1 instanceof Number) // false
    console.log("222" instanceof String) //  false
    console.log(false instanceof Boolean) // false
    console.log(null instanceof Null) // 报错
    console.log(undefined instanceof Undefined) // 报错
   
    // 引用数据类型
    console.log({} instanceof Object)  // true
    console.log([] instanceof Array)  // true
    console.log(/^123$/ instanceof RegExp) //true
    console.log(function () {} instanceof Function) //true
    console.log(new Date() instanceof Date);// true

我们可以用instanceof判断一个变量是否是简单类型,还是复杂类型

注意:判断null 和undefined 是会报错

第三种、constructor

根据对象的constructor判断,返回对创建此对象的数组函数的引用。

// 简单数据类型
    let num = 1;
    console.log("str".constructor === String) // true
    console.log(num.constructor === Number) // true
    console.log(true.constructor === Boolean) // true
    console.log(null.constructor === Null) // 报错
    console.log(undefined.constructor === Undefined) // 报错
   
    // 引用数据类型
    console.log({}.constructor===Object); // true
    console.log([].constructor===Array);// true
    console.log(/^123$/.constructor===RegExp);// true
    console.log(function(){}.constructor===Function);// true
    console.log(new Date().constructor===Date()); // false
//注意: constructor 在类继承时会出错

第四种、prototype

所有数据类型均可判断:Object.prototype.toString.call

这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。

    // 简单数据类型
    let getType = Object.prototype.toString;
    console.log(getType.call("aaa")) // [object String]
    console.log(getType.call(1)) // [object Number]
    console.log(getType.call(true)) // [object Boolean]
    console.log(getType.call(null)) // [object Null]
    console.log(getType.call(undefined)) // [object Undefined]

    // 引用数据类型
    console.log(getType.call({})); // [object Object]
    console.log(getType.call([])); // [object Array]
    console.log(getType.call(/^123$/)); // [object RegExp]
    console.log(getType.call(function () {})); // [object Function]
    console.log(getType.call(new Date()).replace(/^\[object (\S+)\]$/, '$1')); // Date
// 正则
// replace(/^\[object (\S+)\]$/, '$1')) 用来提取我们想要的类型

我们可以建立一个正则表达式,来捕捉我们需要的字段
注意:返回的是字符串

补充:Array.isArray(obj)

判断一个变量是否是数组。如果是数组,返回true。否则返回false
语法:

Array.inArray(变量)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值