js typeof和instanceof的区别

typeof是一个一元运算,放在一个运算数前面,运算数可以是任意类型的数

返回值一般有这几个:number,boolean,string,function,object,undefined

实际应用中通常用来获取一个变量是否存在,if(typeof a!='undefined'){alert('ok')}; 不要用if(a){}这样的方式判断是否存在,如果不存在会报错,而且有bug,如果a是0

那么得到的结果一样是false,因为0会转换成false。

那么为什么不用typeof来判断一个变量的类型呢?string,number这些事可以的,但是Array,null这些特殊对象使用typeof通通得到的都是一个object,这往往不是我们

想要的结果,这就是typeof的局限性,所以我们会用另外一个来判断,instanceof来判断

instanceof是用来判断某个对象是不是另一个类的实例

function aa(){}

var a=new aa();

var b={};

a instanceof aa;   //true a是aa的一个实例

b instanceof aa;   //false b不是aa的实例额,但是它是Object的实例,所以,b instanceo Object;   //true


注意instanceof测试的object是指js语法中的object,dom节点的object不能起作用:

window instanceof Object;    //false   因为window是dom模型的对象,不是js语法中的对象,但是typeof这个时候就能用上了:typeof window;//Object


说多一个插曲 ,   函数的arguments很多人都误以为是数组,其实不是:

证明:

function testArg(){
console.log(arguments);
console.log(arguments instanceof Array);
console.log(arguments instanceof Object);
console.log(typeof arguments);
}

testArg(2,4,5)


 [2, 4, 5]   //arguments打印出来的确实是数组的形式,但是通过检测证明了它其实是一个对象
 false     // arguments in Array;

 true      // arguments in Object;
 object  // typeof arguments


今天就扯到这,打完收工

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值