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获取class的所有元素
Mar 28 Javascript
js实现的tab标签切换效果代码分享
Aug 25 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
Mar 07 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
基于jQuery实现滚动切换效果
Dec 02 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
Dec 12 Javascript
JavaScript高阶函数_动力节点Java学院整理
Jun 28 Javascript
Javascript快速实现浏览器系统通知
Aug 26 Javascript
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 jQuery
vue-自定义组件传值的实例讲解
Sep 18 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 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另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
javascript深入理解js闭包
2010/07/03 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
基于jquery的on和click的区别详解
2018/01/15 jQuery
微信小程序实现流程进度的图样式功能
2018/01/16 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
CSS3动画效果回调处理详解
2014/12/10 HTML / CSS
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
初婚初育证明
2014/01/14 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
引用计数法和root搜索算法以及JVM中判定对象需要回收的方法
2022/04/19 Java/Android
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL