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 相关文章推荐
mapper--图片热点区域高亮组件官方站点
Dec 22 Javascript
js中继承的几种用法总结(apply,call,prototype)
Dec 26 Javascript
JavaScript判断textarea值是否为空并给出相应提示
Sep 04 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
jQuery可见性过滤选择器用法示例
Sep 09 Javascript
微信小程序 欢迎界面开发的实例详解
Nov 30 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
详解用node.js实现简单的反向代理
Jun 26 Javascript
JS数组操作之增删改查的简单实现
Aug 21 Javascript
vue-router实现嵌套路由的讲解
Jan 19 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
javascript代码实现简易计算器
Jan 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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
jquery中.add()的使用分析
2013/04/26 Javascript
jquery实现省市select下拉框的替换(示例代码)
2014/02/22 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
javascript 3d 逐侦产品展示(核心精简)
2014/03/26 Javascript
js数组的操作指南
2014/12/28 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
python 获取字符串MD5值方法
2018/05/29 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Python正则表达式和re库知识点总结
2019/02/11 Python
python开启debug模式的方法
2019/06/27 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
信息专业个人的自我评价
2013/12/27 职场文书
新护士岗前培训制度
2014/02/02 职场文书
班级出游活动计划书
2014/08/15 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2014年会计个人工作总结
2014/11/24 职场文书
初中班长竞选稿
2015/11/20 职场文书
大学生创业计划书
2019/06/24 职场文书
怎么用Python识别手势数字
2021/06/07 Python