js中判断数据类型的四种方法总结
js中判断数据类型的四种方法
前言
在js中,我们经常需要判断数据的类型,那么哪些方法可以用来判断数据的类型呢?哪种方法判断数据类型最准确呢?
我们来一个个分析:
1.typeof
typeof是一个运算符,使用方式有两种:1.typeof(表达式)2.typeof 变量名。返回值为表示类型的字符串。能判断的类型有
Number、String、Boolean,Undefined、Object、Function、Symbol等
实例详解:

注意最后两个typeof null 和 typeof [] 返回的都是object。可以看出typeof并不能准确的判断出array和null。
结论:
typeof 对对象类型的值的类型不能作出准确判断,能准确判断出基本数据类型的值!
2.instanceof
A instanceof B 判断 A 是否为 B 的实例,如果是,则返回 true,不是则返回 false。instanceof检测的是原型,内部机制其实就是判断对象 A 的原型链中是否有 B 的原型。
实例详解:

从上面的实例我们可以看出,基本数据类型的值不能用 instanceof 判断类型,由于undefined和null没有构造函数,所以使用 instanceof 会报错!而由基本数据包装类创建的对象可以用 instanceof 判断类型。
结论:
instanceof 只能用于判断对象,基本数据类型值不能判断,所以也不能准确的判断出所有的类型!
3.constructor
当一个函数F被定义时,JS引擎会为F添加prototype原型,然后在prototype上添加一个constructor属性,并让其指向F的引用,F利用原型对象的constructor属性引用了自身,当F作为构造函数创建对象时,原型上的constructor属性被遗传到了新创建的对象上,从原型链角度讲,构造函数F就是新对象的类型。这样做的意义是,让对象诞生以后,就具有可追溯的数据类型。
从实例我们可以看出:constructor判断undefined和null时,会报错。
结论:
constructor能判断基本数据类型string、number、boolean和对象类型(array、function等等),但是它不能判断undefined和null。所以它判断类型值也不十分准确!
4.Object.prototype.toString.call()(最准确的判断类型的方法,推荐使用,也是面试官想要的答案!!!)
toString()是Object的原型方法,调用该方法,默认返回当前对象的[[Class]]。这是一个内部属性,其格式为[object Xxx],其中Xxx就是对象的类型。
对于Object对象,直接调用toString()就能返回[object Object],而对于其他对象,则需要通过call、apply来调用才能返回正确的类型信息。

从实例我们可以看出该方法能判断基本类型也能判断 Array 和 Function。
对于Object对象:

实例可见,对于Object对象,可以直接使用 toString() 方法,对于其他内置对象,Object.prototype.toString.call() 方法都能准确的判断出其类型。
结论:
Object.prototype.toString.call() 方法是判断类型的最准确的方法!
总结:
要判断一个值的类型,最准确的方法就是Object.prototype.toString.call()
js中判断数据类型的四种方法总结的更多相关文章
- JS中判断数据类型的几种方法
1⃣️首先我们来了解一下js中的数据类型 1.基本数据类型:Undefined.Null.Boolean.Number.String(值类型) 2.复杂数据类型:Object(引用类型) (值类型和引 ...
- JS中检测数据类型的四种方法
1.typeof 用来检测数据类型的运算符->typeof value->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."st ...
- 判断js中的数据类型的几种方法
判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异 ...
- 转:判断js中的数据类型的几种方法
判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异 ...
- JS 中检测数组的四种方法
今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...
- js判断数据类型的四种方法
1.typeof typeof是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的数据类型.返回的结果用该类型的字符串(全小写字母)形式表示,包括number,string,boolean,und ...
- [转]js判断数据类型的四种方法
原文地址:https://www.cnblogs.com/crackedlove/p/10331317.html 1.typeof typeof是一个操作符,其右侧跟一个一元表达式,并返回这个表达式的 ...
- js中控制流管理的四种方法
引自http://es6.ruanyifeng.com/#docs/generator#yield--表达式 1.常用的回调方法 step1(function (value1) { step2(val ...
- JS中检测数据类型的四种方式及每个方式的优缺点
//1.typeof 用来检测数据类型的运算符 //->typeof value //->返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number". ...
随机推荐
- CRM系统个性化定制的对企业的优势作用
伴随着科学技术的不断发展,企业信息化建设也在持续地开展.企业管理模式已经开始由传统模式向信息化转变,并且越来越多的企业开始使用互联网软件来进行辅助管理,这一趋势也让CRM客户管理系统得到快速的发展.市 ...
- Linux安全攻防:使用TRAP实现持续控制和提权
ATT&CK TRAP技术说明 在ATT&CK中,TRAP属于事件触发执行的一种技术,可以用于持续控制(persistence)和提权(privilege escalation). T ...
- MySql:mysql修改密码及配置远程连接
通过配置文件修改 mysql5.7 mysql库下面的user表没有password字段无法修改密码,5.7版本已经不再使用password来作为密码的字段了 而改成了authentication ...
- jar打包
1.jar文件? 学过java的同学应该都听过吧!所以第一站是:打包发布 2.如何把 java 程序编译成 .exe 文件? 通常回答只有两种: 1)一种是制作一个可执行的 JAR 文件包,然后就可以 ...
- 资源:zookeeper下载地址
提供zookeeper下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/
- Mysql常用语句整理
把工作常用的mysql命令整理一下,省的用的时候在到处找 1.常用命令 1.1 登录 mysql -u root -p 1.2 生成随机数 若在 i<=R<=j 范围内生成随机数 FLOO ...
- Adaptive AUTOSAR 学习笔记 5 - 架构 - 物理视图
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- Nginx PHP测试装
Nginx yum -y install gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl open ...
- mongodb oplog详解和格式分析
1. 基本概念 oplog使用固定大小集合记录了数据库中所有修改操作的操作日志(新增.修改和删除,无查询),mongodb收到修改请求后,先在主节点(Primary)执行请求,再把操作日志保存到opl ...
- python 实时监控剪切板,并替换其中的部分内容,重新写入剪切板
#实时监控剪贴板内容的变化,并替换其中的回车,换行,逗号,再写入剪切板,以供使用. import pyperclip import time last_string = pyperclip.paste ...