js怎么判断数据类型

一、利用typeof 判断基本数据类型

数字、字符串、布尔等基本类型可以由typeof进行判断,复杂数据类型大多都被认为是对象

注:undefined可以判断,null则被视为空对象

typeof 1         //number
typeof 'a'       //string
typeof true      //boolean
typeof undefined //undefined

typeof null      //object null空对象
typeof arr       //object
typeof {}        //object
typeof alert     //function 函数对象

二、利用instanceof区分Object和Array

instanceof运算符用于通过查找原型链来检测某个变量是否为某个类型数据的实例

arr instanceof Array === true //arr是Array的实例
[1,2,3] instanceof Array   //true
[1,2,3] instanceof Object  //true

{a:1} instanceof Object    //true

但是由于Array也是继承于Object的,所以这样是无法精准区分的

所以我们采用判断其构造函数的方法判断其本身

let arr = [1,2,3]
let obj = {a:1}

arr.constructor === Array   //true
arr.constructor === Object  //false

obj.constructor === Array   //false
obj.constructor === Object  //true

三、使用 Object.prototype.toString.call() 方法来揭示类型!

最复杂最精准的方法

Object.prototype.toString.call(1)       //[Object,Number]
Object.prototype.toString.call('a')     //[Object,String]
Object.prototype.toString.call(true)    //[Object,Boolean]
Object.prototype.toString.call([1,2,3]) //[Object,Array]
Object.prototype.toString.call({a:1})   //[Object,Object]
Object.prototype.toString.call(null)    //[Object,Null]
Object.prototype.toString.call(undefined) //[Object,Undefined]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值