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中OnLoad几种使用方法
Dec 15 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
JS获取单击按钮单元格所在行的信息
Jun 17 Javascript
jQuery中append()方法用法实例
Jan 08 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
Jul 17 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
JavaScript数据结构中串的表示与应用实例
Apr 12 Javascript
js读取本地文件的实例
Dec 22 Javascript
详解如何配置vue-cli3.0的vue.config.js
Aug 23 Javascript
Javascript原生ajax请求代码实例
Feb 20 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
ES6 解构赋值的原理及运用
May 25 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新手上路(八)
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
面向对象的编程思想在javascript中的运用上部
2009/11/20 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
python二分法实现实例
2013/11/21 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Django的models中on_delete参数详解
2019/07/16 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
python实现字典嵌套列表取值
2019/12/16 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
python 下载文件的几种方法汇总
2021/01/06 Python
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
Python文件操作的面试题
2013/06/22 面试题
能源工程专业应届生求职信
2014/03/01 职场文书
行政监察建议书
2014/05/19 职场文书
法学专业求职信
2014/07/15 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
人民币使用说明书
2019/04/17 职场文书