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 While 循环基础教程
Apr 05 Javascript
js 实现css风格选择器(压缩后2KB)
Jan 12 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
Jun 03 Javascript
js调用AJAX时Get和post的乱码解决方法
Jun 04 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
Dec 04 Javascript
window.open()实现post传递参数
Mar 12 Javascript
jQuery网页选项卡插件rTabs用法实例分析
Aug 26 Javascript
基于jQuery实现复选框是否选中进行答题提示
Dec 10 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
Mar 30 Javascript
vue配置多页面的实现方法
May 22 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
vue-cli3.X快速创建项目的方法步骤
Nov 14 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中获取主机名、协议及IP地址的方法
2014/11/18 PHP
php统计数组元素个数的方法
2015/07/02 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
很酷的javascript loading效果代码
2008/06/18 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
2017/10/25 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
解决修复npm安装全局模块权限的问题
2018/05/17 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
Python continue语句实例用法
2020/02/06 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
寒假思想汇报
2014/01/10 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
企业承诺书格式
2014/05/21 职场文书
基层党员公开承诺书
2014/05/29 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
学校体育节班级口号
2015/12/25 职场文书