JS数据类型分类及常用判断方法


Posted in Javascript onNovember 19, 2020

数据类型判断的方法

在探索数据类型判断方法的时候我们需要知道JS中有哪些数据类型:

我们可以把JS中数据类型分为两类:

1.基本数据类型:Undefined、Null、Boolean、Number、String、Symbol(es6中新增)

2.引用类型(复杂数据类型):里面包含 function、Array、Date 等

判断数据类型的方法有几种

1.typeof

我相信typeof这个判断数据类型的方法是大家平常用的比较多的,闲话不多说,直接上代码:

console.log(typeof 1);//number
console.log(typeof 'hello');//string
console.log(typeof true);//boolean
console.log(typeof null);//object
console.log(typeof Symbol(1));//symbol
console.log(typeof undefined);//undefined
console.log(typeof function(){});//function
console.log(typeof []);//object
console.log(typeof {});//object

通过以上代码和输出我们大概可以看出,typeof这个判断能判断出大部分的数据类型,但是基本类型中有null的类型被判断为object

所以这个判断还不是那么精确,我们需要其它判断方法

2.instanceof 用于检测构造函数的 prototype 属性是否出现在某个实例的原型链上

1.instanceof 左为实例,右为构造函数。即判断左是不是右的实例对象。内部机制是通过原型链来判断的

2.instanceof 可以精准判断引用数据类型 Array,Function,Object,而基本数据类型不能被 instanceof 精准判断,因为它本身不是一个实例对象

console.log(2 instanceof Number);//false
console.log(new Number(2) instanceof Number);//true
console.log('str' instanceof String); //false
console.log(new String('str') instanceof String); //true
console.log([] instanceof Array);//true
console.log([]instanceof Object);//true
console.log({} instanceof Object);//true
console.log({} instanceof Array);//false
console.log(function(){} instanceof Function); // true 

在以上代码中,我们可以看出这个判断方法还是没解决实际性的问题,比如我们想判断null为null,所以接下来介绍一个精确的判断方法

3.Object.prototype.toString.call()

1.使用 Object 对象的原型方法 toString,使用 call 改变 this 指向

见代码:

const a = Object.prototype.toString;
console.log(a.call(2)); // [object Number]
console.log(a.call(true)); // [object Boolean]
console.log(a.call('str')); // [object String]
console.log(a.call(Symbol())) // [object Symbol]
console.log(a.call([])); // [object Array]
console.log(a.call(function(){})); // [object Function]
console.log(a.call({})); // [object Object]
console.log(a.call(undefined)); // [object Undefined]
console.log(a.call(null)); // [object Null]
console.log(a.call(new Date())) // [object Date]
console.log(a.call(new Error())) // [object Error]
console.log(a.call(new RegExp())) // [object RegExp

见上面输出可知,Object.prototype.toString.call()可以判断出复杂类型中的Array,Function,Date等类型,所以我们知道,当我们需要判断复杂类型时,或者判断简单数据类型中的null为null时我们可以用次方法,判断简单类型中的其他数据类型我们可以用typeof来判断就可以

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
非主流的textarea自增长实现js代码
Dec 20 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
Apr 23 Javascript
IE8中使用javascript动态加载CSS的解决方法
Jun 17 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
jquery图片滚动放大代码分享(1)
Aug 25 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
vue实现列表的添加点击
Dec 29 Javascript
Node.js连接MongoDB数据库产生的问题
Feb 08 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
socket在egg中的使用实例代码详解
May 30 Javascript
javascript中的with语句学习笔记及用法
Feb 17 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
Jun 08 Javascript
JavaScript构造函数原理及实现流程解析
Nov 19 #Javascript
javascript this指向相关问题及改变方法
Nov 19 #Javascript
JavaScript实现alert弹框效果
Nov 19 #Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
Nov 19 #Vue.js
如何使用 vue-cli 创建模板项目
Nov 19 #Vue.js
原生js实现自定义消息提示框
Nov 19 #Javascript
原生js实现点击按钮复制内容到剪切板
Nov 19 #Javascript
You might like
php实现的发送带附件邮件类实例
2014/09/22 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
PHP中COOKIES使用示例
2015/07/26 PHP
session 加入redis的实现代码
2016/07/15 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
[02:01]大师之路——DOTA2完美大师赛11月论剑上海
2017/11/06 DOTA
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
应届生新闻编辑求职信
2013/11/19 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
工作建议书范文
2014/05/13 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
初中信息技术教学计划
2015/01/22 职场文书
学术会议邀请函
2015/01/30 职场文书
关于迟到的检讨书
2015/05/06 职场文书
高三生物教学反思
2016/02/22 职场文书
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers