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 自动完成脚本整理(33个)
Oct 20 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 Javascript
JQuery跨Iframe选择实现代码
Aug 19 Javascript
jquery isEmptyObject判断是否为空对象的函数
Feb 14 Javascript
javascript操作excel生成报表全攻略
May 04 Javascript
Jquery给基本控件的取值、赋值示例
May 23 Javascript
浅析js预加载/延迟加载
Sep 25 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 Javascript
React 使用Hooks简化受控组件的状态绑定
Mar 18 Javascript
vue动画—通过钩子函数实现半场动画操作
Aug 09 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
Yii清理缓存的方法
2016/01/06 PHP
Smarty变量用法详解
2016/05/11 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
event.srcElement 用法笔记e.target
2009/12/18 Javascript
javascript 函数使用说明
2010/04/07 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JS中使用apply、bind实现为函数或者类传入动态个数的参数
2016/04/26 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
[01:07:17]EG vs Optic Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
python选择排序算法的实现代码
2013/11/21 Python
python中的格式化输出用法总结
2016/07/28 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
新锐科技Java程序员面试题
2016/07/25 面试题
旺仔牛奶广告词
2014/03/20 职场文书
四下基层实施方案
2014/03/28 职场文书
校本课程教学计划
2015/01/19 职场文书
海洋天堂观后感
2015/06/05 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP