JS中typeof与instanceof的区别

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的,那么他们之间有什么区别呢?

typeof

typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
它返回值是一个字符串,该字符说明运算数的类型,typeof 返回值表示的是运算数的数据类型

typeof 一般只会返回六中数据类he型:“number”,“string”,“boolean”,“object”,“function”和“undefined”


我们可以使用typeof来获取一个变量是否存在,如果if(typeof a != “underfined”){alert(“ok”)},而不要去使用if (a) 因为如果a不存在(未声明)则会出错,对于Array和Null等特殊对象使用typeof一律返回object,这正是typeof的局限性

在JavaScript中,判断一个变量的类型常常会用typeof运算符,在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,他都会返回“object”,这就需要用到instanceof来检测某个对象是不是另一个对象的实例

instanceof

instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的prototype属性,instanceof只能用来判断对象和函数,不能用来判断字符串和数字

语法:

object instanceof constructor

参数:object(要检测的对象)contructor(某个构造函数)
描述:instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型脸链上

例子

a instanceof b ? alert (“true”) : alert (“false”);
// a是b的实例?真:弹出true 假:弹出false

instanceof 用于判断一个变量是否为某个对象的实例

所以,我们可以通过这两种方式封装一个函数专门进行类型判断:

function getDataType(obj) {
if (obj === null) {
return “null”;
} else if (typeof obj === “object”) {
if (obj instanceof Array) {
return “array”;
} else {
return “object”;
}
} else {
return typeof obj;
}
}

所以,我们可以通过这两种方式封装一个函数专门进行类型判断:

console.log(getDataType(111)); //number
console.log(getDataType(“fasd”));//string
console.log(getDataType(true));//boolean
console.log(getDataType(function () { }));//function
console.log(getDataType([]));//array
console.log(getDataType({}));//object
console.log(getDataType(null));//null
console.log(getDataType(undefined));//undefined
console.log(getDataType(/\n/));//object
var a;
console.log(getDataType(a));//undefined 如果传入没有声明的变量会直接报错

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值