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 相关文章推荐
jquery 多行文本框(textarea)高度变化
Jul 03 Javascript
js操作模态窗口及父子窗口间相互传值示例
Jun 09 Javascript
jquery $(document).ready()和window.onload的区别浅析
Feb 04 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
移动端js图片查看器
Nov 17 Javascript
bootstrap的常用组件和栅格式布局详解
May 02 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
Feb 08 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
Dec 13 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
Mar 04 Javascript
js比较两个单独的数组或对象是否相等的实例代码
Apr 28 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
May 01 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
Sep 27 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 加密与解密的斗争
2009/04/17 PHP
php模块memcache和memcached区别分析
2011/06/14 PHP
php数组删除元素示例
2014/03/21 PHP
PHP图片处理之图片旋转和图片翻转实例
2014/11/19 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
浅析Jquery操作select
2016/12/13 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Python 字符串换行的多种方式
2018/09/06 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
python线程join方法原理解析
2020/02/11 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
电子商务专业实习生自我鉴定
2013/09/24 职场文书
自我介绍演讲稿
2014/01/15 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
解约证明模板
2015/06/19 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
导游词之上饶龟峰
2019/10/25 职场文书
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis