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 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
javascript编码的几个方法详细介绍
Jan 06 Javascript
javascript中Number对象的toString()方法分析
Dec 20 Javascript
javascript的switch用法注意事项分析
Feb 02 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
Apr 06 Javascript
深入理解node exports和module.exports区别
Jun 01 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
详解vue mixins和extends的巧妙用法
Dec 20 Javascript
微信小程序按钮去除边框线分享页面功能
Aug 27 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
Sep 05 Javascript
javascript实现弹幕墙效果
Nov 28 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 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
PHP获取网卡地址的代码
2008/04/09 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
详解三种方式解决vue中v-html元素中标签样式
2018/11/22 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
微信小程序开发常见问题及解决方案
2019/07/11 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python中用Decorator来简化元编程的教程
2015/04/13 Python
介绍Python的Django框架中的QuerySets
2015/04/20 Python
通过数据库向Django模型添加字段的示例
2015/07/21 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
python 重定向获取真实url的方法
2018/05/11 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
团员学习总结的自我评价范文
2013/10/14 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
七年级生物教学反思
2014/01/30 职场文书
工厂车间标语
2014/06/19 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
表扬通报怎么写
2015/01/16 职场文书
英文商务邀请函范文
2015/01/31 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers