js 判断数据类型的四种方法

1,typeof

typeof 返回的数据类型有

  • undefined
  • boolean (true,false)
  • string
  • symbol
  • number
  • function
  • object 

注意  typeof 无法精准判断 对象(Object) 数组(Array) null(空指针) ,用typeof 判断 返回的都是object 

  • 需要精准判断是不是 Array 时 使用 Array.isArray()   或者 instanceof
  • 判断数据是 是不是 object类型
function isObject(val) {
    return  typeof val === 'object' && val !== null
}

function isArray(val) {
    return Array.isArray(val)
}

function isObject(val){
    return val instanceof Object
}

function isArray(val){
    return val instanceof Array
}

2,constructor

undefinend,和null 没有constructor方法,不能调用会报错

let fn1 = function () {
    return "456"
}
console.log(fn1.constructor==Function)

let obj = { }
console.log(obj.constructor === Object)

let a = 1
console.log(a.constructor === Number)

let str = "122333"
console.log(str.constructor === String)

let arr = [1, 2, 3, 4]
console.log(arr.constructor === Array)

let b1 = true
console.log(b1.constructor === Boolean)

3,instanceof

instanceof 只能用来判断只能用来判断 引用数据类型 对象和数组,不能用来判断 string boolean number

let obj = {}
console.log(obj instanceof Object)

let arr = [1, 2, 3, 4]
console.log(arr instanceof Array)

4,Object.prototype.toString.call(val)

  object.prototype.toString.call() 用于精准的判断数据类型,不能判断null和undefined

function isType(val, type) {
    return Object.prototype.toString.call(val) == `[object ${type}]`
}
console.log(isType(0,  'Number'))
console.log(isType("aa0", 'String'))
console.log(isType(true,  'Boolean'))
console.log(isType([],  'Array'))
console.log(isType({ }, 'Object'))
console.log(isType(function(){}, 'Function'))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值