js中数据类型检测是我们在工作中比较常遇到的问题,也是面试必考问题,今天我们就来梳理一下。
首先js中的数据类型分为两类:
1,基本数据类型:布尔、数值、字符串、undefined和null,以及es6新增的Symbol。
2,引用数据类型:function、array、object、以及es新增set、map。
对于类型检测我们常用的方法就是typeof,所以我们先看一下使用typeof来检测各种类型数据的返回值
从图中我们可以看到对于基本数据类型,使用typeof检测除去null都返回类型本身,而null因为是表示空对象的引用所以返回objcect,但是对于引用数据类型貌似就有点让人头痛了,除了函数是返回function,其它都返回object,我们伟大的typeof也识别不出来了!
这个时候我们可以使用对象原型上的方法toString方法,对象中的toString返回一个标识类型的字符串,但是我们如果想在检测非对象数据的时候也使用此方法就可以用call来进行调用,即Object.prototype.toString.call()
从图中我们可以看到此方法是比较通用的,不论是基本数据类型还是引用数据类型,我们都可以直接用这个方法了,再也不用担心有局限性了。
原文:https://www.cnblogs.com/yujinlong/p/13724395.html