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 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
Javascript中3种实现继承的方法和代码实例
Aug 12 Javascript
Angularjs基础知识及示例汇总
Jan 22 Javascript
JS冒泡事件与事件捕获实例详解
Nov 25 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
Angularjs使用指令做表单校验的方法
Mar 31 Javascript
vue params、query传参使用详解
Sep 12 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
vue实现短信验证码输入框
Apr 17 Javascript
微前端qiankun改造日渐庞大的项目教程
Jun 21 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中的Memcache详解
2014/04/05 PHP
php静态文件生成类实例分析
2015/01/03 PHP
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
vue项目使用微信公众号支付总结及遇到的坑
2018/10/23 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python简单商城购物车实例代码
2018/03/15 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
Python数据库小程序源代码
2019/09/15 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
机械专业应届生求职信
2013/12/12 职场文书
本科生就业推荐信
2014/05/19 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
python套接字socket通信
2022/04/01 Python
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
create-react-app开发常用配置教程
2022/06/25 Javascript
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技