实现判断数据类型的函数

分析:

  • typeof只能返回,stringnumberbooleanundefinedobject
  • null会被判为object
  • array会被判为object

所以比较优雅的方式是Object.portotype.toString.call()的方法,最后再用正则把其中的[object ]替换掉就ok了

function typeOf (obj) {
  if (obj === null) return String(null)
  return typeof obj === 'object'
    ? Object.prototype.toString.call(obj).replace(/(\[object|\])/g, '').toLowerCase()
    : typeof obj
}
let obj = typeOf({})
let arr = typeOf([])
let number = typeOf(123)
let str = typeOf('hello')
let fun = typeOf(function fn () { })
let bool = typeOf(true)
let nul = typeOf(null)
let kong = typeOf(undefined)
console.log(obj, arr, number, str, fun, bool, nul, kong);               
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值