JavaScript中typeof和instanceof的区别

版权声明:本文为CSDN博主「不染-何程龙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44034384/article/details/99249506

一、typeof

ECMAScript 是松散类型的,一次需要一种手段来检测给定变量的数据类型,typeof 操作符就是负责提供这方面信息的,typeof 可以用于检测基本数据类型和引用数据类型。

1、概念:操作符
2、目的:检测一个变量是不是基本数据类型的变量,换句话说,判断一个变量是字符串,数值, 布尔值,对象,undefined
3、注意:使用 typeof 操作符的时候,如果检测对象是函数,那么操作符返回 “function” ,如果检测对象是正则表达式,在 Safari 和 Chrome 中使用 typeof 的时候会错误的返回 “function”,其他的浏览器返回的是object

var a="英莱特_何某"; 
var b=true; 
var c=10; 
var d; 
var e=null;  //null也是一个对象
var f=new Object(); 
   
alert(typeof a); //string 
alert(typeof b); //number 
alert(typeof c); //boolean 
alert(typeof d); //undefined 
alert(typeof e); //object 
alert(typeof f); //object

typeof 主要用于检测基本数据类型:数值、字符串、布尔值、undefined, 因为 typeof 用于检测引用类型值时,对于任何 Object 对象实例(包括 null ),typeof 都返回 “object” 值,没办法区分是那种对象,对实际编码用处不大。

二、instanceof

在检测基本数据类型时 typeof 是非常得力的助手,但在检测引用类型的值时,这个操作符的用处不大,通常,我们并不是想知道某个值是对象,而是想知道它是什么类型的对象。此时我们可以使用 ECMAScript 提供的 instanceof 操作符。

1、概念:检验引用类型
2、目的:判断对象是 Array, RegExp
3、 注意:object 是所有对象的基类

var array=new Array();  
var object=new Object();  
var regexp=new RegExp();  
function Func(){};  
var func1=new Func();  
  
alert(array instanceof Array);  //true  
alert(object instanceof Object);  //true  
alert(regexp instanceof RegExp);  //true  
alert(func1 instanceof Func);  //true 

根据规定,所有引用类型的值都是 Object 的实例。因此,在检测一个引用类型值和 Object 构造函数时,instanceof 操作符会始终返回 true。如果使用 instanceof 操作符检测基本类型值时,该操作符会始终返回 false,因为基本类型不是对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值