1、定义检测数据

const num  = 123;
const str  = 'aaa';
const bool = true;
const arr  = [1, 2];
const json = {name:'aaa', num:111};
const func = () => console.log('function');
const und  = undefined;
const nul  = null;
const date = new Date();
const reg  = /[a-z]/;
const error= new Error();

2、typeOf()检测

typeof对于原始类型(除了Null)是可以检测到的,但是引用类型就统一返回object

console.log(typeof num,      // numbertypeof str,        // stringtypeof bool,   // booleantypeof arr,       // objecttypeof json,   // objecttypeof func,   // function typeof und,     // undefined typeof nul,        // objecttypeof date,   // objecttypeof reg,        // objecttypeof error   // object
);

arr, json, nul, date, reg, error 全部被检测为object类型,其他的变量能够被正确检测出来。当需要变量是否是number, string, boolean, function, undefined, json类型时,可以使用typeof进行判断。其他变量是判断不出类型的,包括null。

3、instance of()检测

instance of 用于检测构造函数的原型是否出现在某个实例函数的原型链上

console.log(num instanceof Number,       // falsestr instanceof String,      // falsebool instanceof Boolean,    // falsearr instanceof Array,       // truejson instanceof Object,      // truefunc instanceof Function,    // trueund instanceof Object,       // falsenul instanceof Object,      // falsedate instanceof Date,       // truereg instanceof RegExp,       // trueerror instanceof Error       // true
)

4、Object.prototype.toString.call()检测

最好的方法是使用 Object.prototype.toString方法,它可以检测到任何类型,返回的结果是[object Type]的形式,基本可以实现所有类型的检测,我们用下面的代码来演示一下。

//实现一个检测类型的公共接口
checkType = data => Object.prototype.toString.call(data);//根据自己的需求进行扩展,记住类型的首字母要大写
Object.prototype.toString.call(num);            // "[object Number]"
Object.prototype.toString.call(str);            // "[object String]"
Object.prototype.toString.call(bool);           // "[object Boolean]"
Object.prototype.toString.call(arr);            // "[object Array]"
Object.prototype.toString.call(json);           // "[object JSON]"
Object.prototype.toString.call(func);           // "[object Function]"
Object.prototype.toString.call(und);            // "[object Undefined]"
Object.prototype.toString.call(nul);            // "[object Null]"
Object.prototype.toString.call(date);           // "[object Date]"
Object.prototype.toString.call(reg);            // "[object RegExp]"
Object.prototype.toString.call(error);          // "[object Error]"

JavaScript判断数据类型相关推荐

  1. JavaScript判断数据类型的方式

    JavaScript判断数据类型的方式 js中的数据类型有哪些? 基本数据类型:number.string.boolean.null.undefined.symbol以及未来ES10新增的BigInt ...

  2. JavaScript 判断数据类型

    JavaScript 判断数据类型 首先JavaScript基本数据类型有:number null undefined string boolean es6以后还新增了bigint和symbol (上 ...

  3. JavaScript判断数据类型的方法

    JavaScript判断数据类型的方法 1 数据类型有哪些? 2 判断JavaScript数据类型的方法 2.1 typeof 2.2 instanceof 2.3 constructor 2.4 t ...

  4. JavaScript判断数据类型是不是数组

    JavaScript判断数据类型是不是数组 1.Array.isArray(es6 新增) 在这里插入代码片 Array.isArray([]) true Array.isArray({}) fals ...

  5. JavaScript 判断数据类型的方法

    文章目录 1.javascript 中的数据类型 2.`typeof` 返回 变量的数据类型 3.`instanceof ` :复杂数据类型的判断 3.1.instanceof 原理分析(初学者跳过) ...

  6. JavaScript学习总结(六)——JavaScript判断数据类型总结

    最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断,在此做一个总结吧! 一.JS中的数据类型 1.数值型(Number):包括整数.浮 ...

  7. javascript 判断数据类型的几种方法 1

    1.typeof 类型判断 缺点:无法区分null .对象.数组,Map,Set,WeakMap,WeakSet.RegExp等 注意:通过构造函数创建的变量typeof 后是都是object var ...

  8. JavaScript判断数据类型有几种方法,以及它们的区别

    JavaScript有五种数据判断类型方法: typeof instanceof constructor Object.prototype.toString.call()

  9. javaScript中判断数据类型的方法

    目录 一.javaScript数据类型 二.javaScript判断数据类型的方法 1.使用typeof 2.使用instanceof 3.使用Object.prototype.toString.ca ...

最新文章

  1. 加载部分神经网络预训练参数后改写网络的方法
  2. 用GrabCut进行前景检测(对书中代码进行改进)Python
  3. P8实战(四):多种分布式锁实现
  4. epoll为什么比select和poll效率更高
  5. [云框架]KONG API Gateway v1.5 -框架说明、快速部署、插件开发
  6. 【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型
  7. 华尔街顶级大师胡立阳名言
  8. c 抄了java 多少东西,几款Java开发者必备常用的工具,准点下班不在话下
  9. GL和DX中关于纹理操作(包括多重纹理)与混合的问题
  10. PHP亿乐社区源码一比一高仿全开源源码
  11. 往事如烟 - 归去来
  12. 什么是CTP程序化交易:系统入门
  13. ubuntu桌面图标不显示问题
  14. sql中exist与in 的区别
  15. 100个python算法超详细讲解:农夫过河
  16. python 降序排列
  17. 2020-8-15 无线充电原理和注意事项 WCP/铁氧体
  18. HDMI协议解析-从软硬件角度分析
  19. 如果企业微信不用了怎么解绑手机?
  20. 软件测试面试题(带答案)

热门文章

  1. nyoj--61 传字条(一)(多线程dp)
  2. 【微信小程序云开发】笔记
  3. 曾经对程序员最好的公司,倒下了
  4. java中resulttype,深入理解Mybatis中的resultType和resultMap
  5. Namo for Mac(DNS服务器配置工具)
  6. 1、CentOS 安装 Java JDK
  7. NVIDIA Xavier NX的Intel Realsense双目相机(T265+D435i)环境搭建
  8. “键盘侠”比电销客服还敬业
  9. 网络攻防实战研究 漏洞利用与提权读书笔记一
  10. Error when loading the SDK: 发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。