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 代码的方法小结
Jul 16 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
Aug 05 Javascript
AngularJS内置指令
Feb 04 Javascript
在AngularJS框架中处理数据建模的方式解析
Mar 05 Javascript
微信小程序表单验证错误提示效果
May 19 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
ES6之模版字符串的具体使用
May 17 Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
JavaScript基础之静态方法和实例方法分析
Dec 26 Javascript
Vue使用axios出现options请求方法
May 30 Javascript
JavaScript中Dom操作实例详解
Jul 08 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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
js设置控件的隐藏与显示的两种方法
2014/08/21 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
不同编码的页面表单数据乱码问题解决方法
2015/02/15 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
vue点击页面空白处实现保存功能
2019/11/06 Javascript
vue 内联样式style中的background用法说明
2020/08/05 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
python的几种开发工具介绍
2007/03/07 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python如何从键盘获取输入实例
2020/06/18 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
mysql_pconnect()和mysql_connect()有什么区别
2012/05/25 面试题
职称自我鉴定
2013/10/15 职场文书
对标管理实施方案
2014/03/12 职场文书
毕业生评语大全
2015/01/04 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书