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中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
javascript与CSS复习(三)
Jun 29 Javascript
js常用代码段整理
Nov 30 Javascript
JQuery select控件的相关操作实现代码
Sep 14 Javascript
js获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
Oct 24 Javascript
JavaScript装饰器函数(Decorator)实例详解
Mar 30 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
vuex的使用和简易实现
Jan 07 Vue.js
详解如何探测小程序返回到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中fgetcsv()函数用法实例
2014/11/28 PHP
PHP Cookie学习笔记
2016/08/23 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
vue之封装多个组件调用同一接口的案例
2020/08/11 Javascript
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python中import学习备忘笔记
2017/01/24 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
python中pop()函数的语法与实例
2020/12/01 Python
python 递归相关知识总结
2021/03/03 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
中文专业毕业生自荐信
2013/10/28 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
党员一帮一活动总结
2014/07/08 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
二手房购房意向书
2015/05/09 职场文书
城南旧事电影观后感
2015/06/16 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
机关单位2016年法制宣传日活动总结
2016/04/01 职场文书
Java数组详细介绍及相关工具类
2022/04/14 Java/Android