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 相关文章推荐
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
卸载安装Node.js与npm过程详解
Aug 15 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
Jan 16 Javascript
vue的常用组件操作方法应用分析
Apr 13 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 jQuery
微信小程序之判断页面滚动方向的示例代码
Aug 30 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
May 14 jQuery
简单了解JavaScript异步
May 23 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
Jun 03 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
Vue 实现一个命令式弹窗组件功能
Sep 25 Javascript
微信小程序实现音频文件播放进度的实例代码
Mar 02 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
基于mysql的论坛(5)
2006/10/09 PHP
使用PHP的日期与时间函数技巧
2008/04/24 PHP
php 结果集的分页实现代码
2009/03/10 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
python添加菜单图文讲解
2019/06/04 Python
Django1.11配合uni-app发起微信支付的实现
2019/10/12 Python
如何基于Python实现自动扫雷
2020/01/06 Python
如何把python项目部署到linux服务器
2020/08/26 Python
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
C#笔试题集合
2013/06/21 面试题
关于爱情的广播稿
2014/01/16 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
小学记事作文之200字
2019/08/06 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
golang正则之命名分组方式
2021/04/25 Golang
PyCharm 安装与使用配置教程(windows,mac通用)
2021/05/12 Python