js高级之怎么判断数据类型

判断数据类型有三种方式,typeof和(===)是判断基本类型的,instanceof是判断对象具体类型的

1.typeof

  • 返回的是字符串
 console.log(typeof a==='undefined') 	//true
 console.log(typeof a===undefined) 	//false
  • 可以判断number,string,Boolean,undefined类型

  • 不能用在判断object和Array

    b1.b2 是个数组
    console.log(typeof b1.b2)  //object   
    
  • 不能用来区别null和object

    var a=null
    console.log(typeof a) 	//object
    

    问题:null明明是基本的数据类型,为什么typeof会判定它是object呢?

    这是一个历史遗留问题:

    原理是这样的,不同的对象在底层都表示为二进制,在Javascript中二进制前三位都为0的话会被判断为Object类型,null的二进制表示全为0,自然前三位也是0,所以执行typeof时会返回"object"。

  • 可以用来判断函数function

    console.log(typeof b1.b3)  //function     
    console.log(typeof b1.b3==='function')  //true
    

2.全等(===)

只能用来判断两种,因为这两个类型只有一个值

  • undefined

    console.log(typeof a==='undefined') 	//true
    
  • null

    var a=null
    console.log(a===null)  //ture
    

3.instanceof

var b1={
             b2:[12,34,445],
             b3:function(){
                 console.log('ba')
             }
         }
  • 对象

     console.log(b1 instanceof Object) //true
     console.log(b1 instanceof Array)  //false
    
  • 数组

    console.log(b1.b2 instanceof Object) //true
    console.log(b1.b2 instanceof Array)  //true
    
  • 函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值