JS数据类型分类及常用判断方法
数据类型判断的方法
在探索数据类型判断方法的时候我们需要知道JS中有哪些数据类型:
我们可以把JS中数据类型分为两类:
1.基本数据类型:Undefined、Null、Boolean、Number、String、Symbol(es6中新增)
2.引用类型(复杂数据类型):里面包含function、Array、Date等
判断数据类型的方法有几种
1.typeof
我相信typeof这个判断数据类型的方法是大家平常用的比较多的,闲话不多说,直接上代码:
console.log(typeof1);//number
console.log(typeof'hello');//string
console.log(typeoftrue);//boolean
console.log(typeofnull);//object
console.log(typeofSymbol(1));//symbol
console.log(typeofundefined);//undefined
console.log(typeoffunction(){});//function
console.log(typeof[]);//object
console.log(typeof{});//object
通过以上代码和输出我们大概可以看出,typeof这个判断能判断出大部分的数据类型,但是基本类型中有null的类型被判断为object
所以这个判断还不是那么精确,我们需要其它判断方法
2.instanceof用于检测构造函数的prototype属性是否出现在某个实例的原型链上
1.instanceof左为实例,右为构造函数。即判断左是不是右的实例对象。内部机制是通过原型链来判断的
2.instanceof可以精准判断引用数据类型Array,Function,Object,而基本数据类型不能被instanceof精准判断,因为它本身不是一个实例对象
console.log(2instanceofNumber);//false
console.log(newNumber(2)instanceofNumber);//true
console.log('str'instanceofString);//false
console.log(newString('str')instanceofString);//true
console.log([]instanceofArray);//true
console.log([]instanceofObject);//true
console.log({}instanceofObject);//true
console.log({}instanceofArray);//false
console.log(function(){}instanceofFunction);//true
在以上代码中,我们可以看出这个判断方法还是没解决实际性的问题,比如我们想判断null为null,所以接下来介绍一个精确的判断方法
3.Object.prototype.toString.call()
1.使用Object对象的原型方法toString,使用call改变this指向
见代码:
consta=Object.prototype.toString;
console.log(a.call(2));//[objectNumber]
console.log(a.call(true));//[objectBoolean]
console.log(a.call('str'));//[objectString]
console.log(a.call(Symbol()))//[objectSymbol]
console.log(a.call([]));//[objectArray]
console.log(a.call(function(){}));//[objectFunction]
console.log(a.call({}));//[objectObject]
console.log(a.call(undefined));//[objectUndefined]
console.log(a.call(null));//[objectNull]
console.log(a.call(newDate()))//[objectDate]
console.log(a.call(newError()))//[objectError]
console.log(a.call(newRegExp()))//[objectRegExp
见上面输出可知,Object.prototype.toString.call()可以判断出复杂类型中的Array,Function,Date等类型,所以我们知道,当我们需要判断复杂类型时,或者判断简单数据类型中的null为null时我们可以用次方法,判断简单类型中的其他数据类型我们可以用typeof来判断就可以
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。