js中数据类型的检测

js中数据类型的检测


(1)检测原始值

原始值类型有:字符串、数字、布尔值、null和undefined。

对于字符串,typeof返回“string”

对于数字,typeof返回“number”

对于布尔值,typeof返回“boolean”

对于undefined,typeof返回"undefined"

基本用法:if(typeof name === "string"){}

typeof将其用于一个未声明的变量也不会报错,未定义的变量和值为undefined的变量通过typeof都将返回"undefined"

最后,typeof null会返回“object”,所以检测null时用恒等 === 或!==


(2)检测引用值

引用值也称对象。内置引用类型有:Object、Array、Date、Error,用typeof显得力不从心,会返回"object"。

所以检测某个引用值的最好方法是使用instanceof运算符。它不仅检测构造这个对象的构造器,还检测原型链。

基本用法: var now = new Date();   if(now instanceof Date){}


(3)检测函数

函数也是引用类型。

不好的写法:if(myFunc instanceof Function){}

好的写法:if(typeof myFunc === "Function"){}

注意:在IE8和更早的IE浏览器中,DOM节点中的函数会返回'object".。


(4)检测数组

Douglas Crockford首先推荐使用“鸭式辨型”来检测sort()方法是否存在。

function isArray(value){return typeof value.sort === "function" }

最终,又有一种更优雅的方案:

function isArray(value){return Object.prototype.toString.call(value) === "[object Array]"}


(5)检测属性

var object = {

count:0,

relatede:null

}

好的写法:

if("count" in object){}

不好的写法:检测假值

if(object["count"]){}

但是in会检测到原型链,如果只检测实例对象,则用hasOwnProperty()方法

基本用法:if(object.hasOwnProperty("related")){}

更推荐使用in。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值