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-Mozilla和IE中的一个函数直接量的问题分析
Aug 12 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
Jul 09 Javascript
javascript实现动态模态绑定grid过程代码
Sep 22 Javascript
node.js中的buffer.copy方法使用说明
Dec 14 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
Nov 17 Javascript
分享jQuery网页元素拖拽插件
Dec 01 Javascript
JS区分Object与Aarry的六种方法总结
Feb 27 Javascript
微信小程序实现皮肤功能(夜间模式)
Jun 18 Javascript
react.js使用webpack搭配环境的入门教程
Aug 14 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
Jul 26 Javascript
关于vue表单提交防双/多击的例子
Oct 31 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实现跨域提交form表单的方法【2种方法】
2016/10/17 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
GWebs公司笔试题
2012/05/04 面试题
营销总监岗位职责范本
2014/02/26 职场文书
如何写好建议书
2014/03/13 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
学生安全责任书模板
2014/07/25 职场文书
个人整改措施书面材料
2014/10/24 职场文书
现实表现材料范文
2014/12/23 职场文书
工作时间调整通知
2015/04/24 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
《折线统计图》教学反思
2016/02/22 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript