javascript中如何判断类型汇总


Posted in Javascript onMay 14, 2019

前言

我们在写封装的插件或者函数时,常常用到JS的数据类型判断,典型的案例就是深度拷贝函数用到数据类型判断,这个知识点在面试的时候也是经常考到的一个问题。本文就来给大家总结了下javascript中判断类型的相关资料,下面话不多说了,来一起看看详细的介绍吧

String

一个字符串始终是一个字符串,所以这一块是很容易。除非使用new(new String)调用,否则typeof将返回“object”。所以也要包含那些可以使用的字符串instanceof。

// Returns if a value is a string
function isString (value) {
 return typeof value === 'string' || value instanceof String;
}

Number

From typeof more things than just an ordinary number will return "number" like NaN and Infinity. To know if a value really is a number the function isFinite is also required.

从类型更多的东西,而不仅仅是普通的数字将返回像NaN和无限的“数字”。要知道值是否真的是数字,函数isFinite也是必需的。

// Returns if a value is really a number
function isNumber (value) {
 return typeof value === 'number' && isFinite(value);
}

Array

在javascript 数组中不是像java和其他语言中那样的真正数组。它们实际上是对象,因此typeof将为它们返回“对象”。要知道某些东西是否真的是一个数组,它的构造函数可以与Array进行比较。

// Returns if a value is an array
function isArray (value) {
 return value && typeof value === 'object' && value.constructor === Array;
}

// ES5 actually has a method for this (ie9+)
Array.isArray(value);

Function

// Returns if a value is a function
function isFunction (value) {
 return typeof value === 'function';
}

Object

很多东西都是javascript中的对象。要知道值是否是可以具有属性并循环的对象,可以将其构造函数与Object进行比较。它不适用于从类创建的对象,因此可以使用instanceof运算符。

// Returns if a value is an object
function isObject (value) {
 return value && typeof value === 'object' && value.constructor === Object;
}

Null & undefined

大多数情况下,您不需要显式检查null和undefined,因为它们都是假值。然而,要做到这一点,下面的功能就可以了。

// Returns if a value is null
function isNull (value) {
 return value === null;
}

// Returns if a value is undefined
function isUndefined (value) {
 return typeof value === 'undefined';
}

Boolean

对于布尔值, typeof就足够了,因为它返回true和false的“boolean”。

// Returns if a value is a boolean
function isBoolean (value) {
 return typeof value === 'boolean';
}

RegExp

RegExp是对象,因此唯一需要检查的是构造函数是否为RegExp。

// Returns if a value is a regexp
function isRegExp (value) {
 return value && typeof value === 'object' && value.constructor === RegExp;
}

Error

javascript中的错误与许多其他编程语言中的“异常”相同。它们有几种不同的形式,例如Error,TypeError和RangeError。一个instanceof语句对他们来说已经足够了,但我们还要确保我们还检查错误所具有的“message”属性。

// Returns if value is an error object
function isError (value) {
 return value instanceof Error && typeof value.message !== 'undefined';
}

Date

日期实际上不是javascript中的数据类型。但要知道是否有某个Date对象,可以使用instanceof进行检查。

// Returns if value is a date object
function isDate (value) {
 return value instanceof Date;
}

Symbol

// Returns if a Symbol
function isSymbol (value) {
 return typeof value === 'symbol';
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
js 图片轮播(5张图片)
Dec 30 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
Apr 26 Javascript
js 为label标签和div标签赋值的方法
Aug 08 Javascript
json+jQuery实现的无限级树形菜单效果代码
Aug 27 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
Jun 12 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
Sep 27 Javascript
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
Sep 19 Javascript
Vue项目history模式下微信分享爬坑总结
Mar 29 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
vue 子组件和父组件传值的示例
Sep 11 Javascript
详解如何探测小程序返回到webview页面
May 14 #Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
May 14 #jQuery
javascript实现遮罩层动态效果实例
May 14 #Javascript
JQuery animate动画应用示例
May 14 #jQuery
微信小程序的线程架构【推荐】
May 14 #Javascript
jquery实现选项卡切换代码实例
May 14 #jQuery
Vue表单之v-model绑定下拉列表功能
May 14 #Javascript
You might like
用DBSQL类加快开发MySQL数据库程序的速度
2006/10/09 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
关于jQuery判断元素是否存在的问题示例探讨
2014/07/21 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
javascript常用方法总结
2015/05/14 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
php使用递归与迭代实现快速排序示例
2014/01/23 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
Python爬取网页信息的示例
2020/09/24 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
什么是类的返射机制
2016/02/06 面试题
轻化专业学生实习自我鉴定
2013/09/20 职场文书
综治工作汇报材料
2014/10/27 职场文书
美术教师求职信范文
2015/03/20 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
毕业感言怎么写
2015/07/31 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android