1、typeof 类型判断

缺点:无法区分null 、对象、数组,Map,Set,WeakMap,WeakSet、RegExp等

注意:通过构造函数创建的变量typeof 后是都是object

var a = ''
console.log(typeof a)  // stringa = 0
console.log(typeof a)  // numbera = null
console.log(typeof a)  // objecta = undefined
console.log(typeof a)  // undefineda = true
console.log(typeof a)  // booleana = Symbol()
console.log(typeof a)  // symbola = {}
console.log(typeof a)  // objecta = []
console.log(typeof a)  // objecta = function(){}
console.log(typeof a)  // functiona = /\d+/
console.log(typeof a)  // objecta = new Date()
console.log(typeof a)  // objecta = new Map()
console.log(typeof a)  // objecta = new Set()
console.log(typeof a)  // objecta = new WeakMap()
console.log(typeof a)  // objecta = new WeakSet()
console.log(typeof a)  // object

2、instanceof 判断

缺点:

1、只能判断通过构造函数创建的变量,字面量创建的变量无法判断

2、只能区分对象是否存在目标对象的原型链上

var a = ''
console.log(a instanceof String)  // falsea = new String('')
console.log(a instanceof String)  // true// Vue2.6源码,使用 instanceof
function Vue(options){if(this instanceof Vue){}
}a = new Vue({})
console.log(a instanceof Vue) // true

3、通过构造函数的名称判断

缺点:

1、不能判断null和undefined

2、构造函数的指向是可以改变的,因此会存在类型判断不准确

var a = ''
console.log(a.constructor) // ƒ String() { [native code] }a = new String('')
console.log(a.constructor) // ƒ String() { [native code] }
console.log(a.constructor.name)  // Stringa = 1
console.log(a.constructor.name) // Numbera = false
console.log(a.constructor.name) // Booleana = []
console.log(a.constructor.name) // Arraya = {}
console.log(a.constructor.name) // Objecta = new Date()
console.log(a.constructor.name) // Datea = function(){}
console.log(a.constructor.name) // Functiona = /\d+/
console.log(a.constructor.name) // RegExpa = Symbol()
console.log(a.constructor.name) // Symbola = new Map()
console.log(a.constructor.name) // Mapa = new Set()
console.log(a.constructor.name) // Seta = new WeakMap()
console.log(a.constructor.name) // WeakMapa = new WeakSet()
console.log(a.constructor.name) // WeakSet

4、toString方法判断

优点:能够校验所有的数据类型

缺点:不能判断谁是谁的实例

var toString = Object.prototype.toStringvar a = null
console.log(toString.call(a))  // [object Null]a = undefined
console.log(toString.call(a))  // [object Undefined]a = ''
console.log(toString.call(a))  // [object String]a = 1
console.log(toString.call(a))  // [object Number]a = false
console.log(toString.call(a))  // [object Boolean]a = {}
console.log(toString.call(a))  // [object Object]a = []
console.log(toString.call(a))  // [object Array]a = function(){}
console.log(toString.call(a))  // [object Function]a = Symbol()
console.log(toString.call(a))  // [object Symbol]a = /\d+/
console.log(toString.call(a))  // [object RegExp]a = new Map()
console.log(toString.call(a))  // [object Map]a = new Set()
console.log(toString.call(a))  // [object Set]a = new WeakMap()
console.log(toString.call(a))  // [object WeakMap]a = new WeakSet()
console.log(toString.call(a))  // [object WeakSet]

javascript 判断数据类型的几种方法 1相关推荐

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

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

  2. JS判断数据类型的5种方法

    我们先来了解一下JS中数据类型有哪些 基本数据类型(值类型):String.Number.boolean.null.undefined.symbol(es6新增的) 引用数据类型 (引用类型):obj ...

  3. js 判断数据类型的几种方法

    粗体判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法 ...

  4. 判断数据类型的5种方法

    1. typeof 可以判断数据类型,它返回表示数据类型的字符串(返回结果只能包括number,boolean,string,function,object,undefined): 可以使用typeo ...

  5. js 判断数据类型的四种方法

    1,typeof typeof 返回的数据类型有 undefined boolean (true,false) string symbol number function object 注意  typ ...

  6. html数据类型判断,JS中判断数据类型的几种方法

    1⃣️首先我们来了解一下js中的数据类型 1.基本数据类型:Undefined.Null.Boolean.Number.String(值类型) 2.复杂数据类型:Object(引用类型) (值类型和引 ...

  7. JS-循环清空对象 判断数据类型的5种常用方法

    应用场景:一个页面具有大量数据录入功能,在数据录入保存成功之后,需要刷新页面,即清空所有的数据.因为我把所有的字段定义到一个对象中,所以要清空这个对象,如果字段少,可以直接赋值清空,但是数据多的时候, ...

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

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

  9. JavaScript 判断数据类型

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

最新文章

  1. 网络服务-SAMBA
  2. Python列表解析式总结
  3. 如何自学python a byte to python-你是如何自学 Python 的?
  4. VC遍历窗体控件的实现
  5. .NET Core 3.0 Preview 9 发布
  6. 多比(SVG/VML)图形控件多比(SVG/VML)图形拓扑图控件免费下载地址
  7. 用户体验改善案例_改善用户体验研究的5种习惯
  8. Java api在线
  9. 将现有MFC应用程序迁移到BCGControlBar VC界面库中
  10. Hive单用户模式搭建
  11. 【算法笔记HDU4825】Xor Sum(01字典树模版)
  12. Rusr Error: linker `x86_64-w64-mingw32-gcc` not found
  13. linux usb转串口驱动报错,[驱动]内核添加USB转串口驱动支持
  14. matlab画图选项表+标记点大小调整+线段图如何绘制
  15. 树莓派GPIO 基础(一)
  16. 北航计算机学院吉祥物,北航软件学院吉祥物征集令
  17. PC端微信dat图片怎么查看?这里有神器
  18. vscode如何运行python文件_vscode怎么运行.py文件_编程开发工具
  19. CocosCreator之艺术数字资源 (LabelAtlas)
  20. 帝国往昔--中国的附属国

热门文章

  1. STC单片机实现智能小车避障功能的C语言例程
  2. VS2017报错:E1696 命令行错误: 无法打开 元数据 文件 “platform.winmd”
  3. 炫“库”行动-人大金仓有奖征文-KFS目标端支持Kafka配置详解
  4. MYSQL的索引主要作用是什么
  5. 就是我mac安装了虚拟机,装了win10,然后发现在mac系统桌面也会有win系统桌面的工具快捷键图标,如果删除mac桌面的快捷键图标,那么win10桌面的图标也消失了,我百度查的方法都不行。我想知道
  6. 三菱纯水设备程序纯水设备程序 使用三菱A系列 PLC和三菱A985GOT触摸屏
  7. 数据结构(c语言版)(第三版)实验1
  8. 轻松使用git同步到gitee(码云)
  9. linux ntp时间立即同步命令_ntpdate linux时间同步命令
  10. 【无限互联】iOS标签云