js中几种常用数据类型检查方法

js中经常用到数据类型检查,常用的类型检查方法有typeof、instanceof、constructor、Object.prototype.toString.call等,现在逐一介绍一下。

js中数据类型总体上分为二大类:基本类型(原始数据类型)和引用类型,其中

基本类型又分为常用的:

string、number、boolean、null、undefined、symbol、BigInt这些类型

引用类型是除去基本类型外的,比如常用的Array、Object这些

一、typeof

1. 使用typeof判断基本类型:
const str = 'testme'
typeof str // stringconst num = 123
typeof num // numberconst bol = true
typeof bol // booleanconst nu = null
type nu // objecttypeof undefVar // undefinedconst sy = Symbol('a')
typeof sy // symbolconst bi = BigInt("12345678910111213")
typeof bi // bigint2. 使用typeof判断引用类型:const arr = [1,5,7]
typeof arr // objectconst obj = {a:3}
typeof obj // objectfunction Man(name,age) {this.name = namethis.age = age
}
typeof Man // functionconst man = new Man('Lily', 12)
typeof man // object

二、instanceof

使用方法:  A instanceof B

主要是确认B.prototype属性是否在A的原型链上,如果一直顺着原型链找到Object.prototype还是没找到,结果就返回false。主要用来判断引用数据类型的:


const arr = [1,5,7]
arr instanceof Array // trueconst obj = {a:3}
obj instanceof Object // trueobj instanceof Array // falsefunction Man(name,age) {this.name = namethis.age = age
}Man instanceof Function // trueconst man = new Man('Lily', 12)
man instanceof Object // true

三、constructor

A.constructor主要可以返回A对应的构造函数:


const str = 'testme'
str.constructor === String // trueconst num = 123
num.constructor === Number // trueconst bol = true
bol.constructor === Boolean // trueconst arr = [1,5,7]
arr.constructor === Array // trueconst obj = {a:3}
obj.constructor === Object // truefunction Man(name,age) {this.name = namethis.age = age
}Man.constructor === Function // trueconst man = new Man('Lily', 12)
man.constructor === Man // true但是像 null、undefined这种就调用不了constructor判断数据类型了

四、Object.prototype.toString.call

Object.prototype.toString.call方法返回各数据类型的[object xxx]形式:


const str = 'testme'
Object.prototype.toString.call(str) // [object String]const num = 123
Object.prototype.toString.call(num) // [object Number]const bol = true
Object.prototype.toString.call(bol) // [object Boolean]const sy = Symbol('a')
Object.prototype.toString.call(sy) // [object Symbol]const bi = BigInt("12345678910111213")
Object.prototype.toString.call(bi) // [object BigInt]Object.prototype.toString.call(null) // [object Null]Object.prototype.toString.call(undefined) // [object Undefined]const arr = [1,5,7]
Object.prototype.toString.call(arr) // [object Array]const obj = {a:3}
Object.prototype.toString.call(obj) // [object Object]function Man(name,age) {this.name = namethis.age = age
}Object.prototype.toString.call(Man) // [object Function]const man = new Man('Lily', 12)
Object.prototype.toString.call(man) // [object Object]

可以看出Object.prototype.toString.call方法判断的数据类型更广。

去掉Object.prototype.toString.call方法返回结果中的"[object",只保留具体类型:

function getType(data) {return Object.prototype.toString.call(data).replace(/\[object\s+(.+)\]/, '$1' ).toLowerCase()
}const str = 'testme'
getType(str) // stringconst num = 123
getType(num) // numberconst bol = true
getType(bol) // booleanconst sy = Symbol('a')
getType(sy) //symbolconst bi = BigInt("12345678910111213")
getType(bi) // bigIntgetType(null) // nullgetType(undefined) // undefinedconst arr = [1,5,7]
getType(arr) // arrayconst obj = {a:3}
getType(obj) // objectfunction Man(name,age) {this.name = namethis.age = age
}getType(Man) // functionconst man = new Man('Lily', 12)
getType(man) // object

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python日期时间模块Dateutil

Dateutil模块 1、Dateutil库简介2、Dateutil库常用模块 1、Dateutil库简介 dateutil模块是由Gustavo Niemeyer在2003年编写而成的对日期时间操作的第三方模块 dateutil模块对Python内置的datetime模块进行扩展时区和解析 dateutil库主要有两个模块:parser和rrule&…

CSS特效021:蛇形左右扭动的效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…

新手老师如何管理班级的日常工作

作为一名新手老师,管理班级的日常工作可能会是一项挑战,但以下是一些可能有用的建议: 建立良好的班级文化 班级文化是班级氛围的重要组成部分,对于学生的学习和成长具有重要影响。作为老师,要积极营造一种积极向上、团…

电脑IP地址怎么修改?http代理ip设置方法有哪些?

在互联网时代,我们的网络已经成为我们生活、工作和学习中不可或缺的一部分。有时候,为了保护我们的隐私或者突破网络限制,我们需要修改电脑的IP地址。那么,电脑IP地址怎么修改呢?http代理ip设置方法有哪些呢&#xff1…

怎么检测电脑电源?电脑电源检测系统软件如何助力?

电源是电脑的重要组成部分,为电脑提供稳定电源,保证电脑正常工作。但是在电脑实际使用过程中总会遇到各种各样的问题和故障,比如无法开机,因此电脑电源检测是非常重要的测试内容。 如何测试电脑电源? 1. 用万用表检测 a. 将万用表…

linux命令解析神器

遥想刚迈入职场时(当时的工作环境,需要频繁使用linux,登录设备后台操作),偶然间听到我的领导和其他同事说 :“XXX,多学一学。大佬们太厉害了,太低级的问题不要直接问,你登…

HarmonyOS将程序下载并运行到真机上 (华为手机为例)

前面的文章 我们讲到过一些关于这个预览器的操作 可以在上面看到我们代码的一个整体效果 但其实 这边可以真实的运行在我们自己的手机上 因为你这个预览器再好 还是和实际的手机环境有所偏差 首先 我们要设置一下手机 我们在设置中 找到 关于手机 然后 这下面 有一个 Harmo…

QCS2290 DFOTA重启后无法切换分区

在做了OTA升级后重启后,设备一直重启,多次重启后会正常进入slot A分区 开机log如下: Active Slot _b is bootable, retry count 4 Booting from slot (_b) .... [ 14.470311] device-mapper: verity-fec: 253:11: FEC: recursion too dee…

Redis学习文档

目录 一、概念1、特征2、关系型数据库和非关系型数据库的区别3、键的结构4、Redis的Java客户端5、缓存更新策略5.1、概念5.2、代码 6、缓存穿透6.1、含义6.2、解决办法6.3、缓存空值代码举例6.4、布隆过滤器代码举例 7、缓存击穿7.1、概念7.2、解决办法7.3、互斥锁代码举例7.4、…

[PyTorch][chapter 2][李宏毅深度学习-Regression]

前言: Regression 模型主要用于股票预测,自动驾驶,推荐系统等领域. 这个模型的输出是一个scalar。这里主要以下一个线性模型为基础 它是神经网络的基础模块, 目录: 总体流程 常见问题 Numpy 例子 PyTorch 例子 一 总体流程 1 : 建…

【Python百宝箱】数据舞台:Python数据库实战手册

前言 在现代软件开发中,数据的存储和管理是至关重要的一环。Python作为一门广泛应用于各种领域的编程语言,拥有丰富而强大的数据库相关库,能够满足不同项目的需求。本文将深入研究几个重要的Python数据库库,涵盖了关系型数据库、…

智慧工地解决方案,Spring Cloud智慧工地项目平台源码

智慧工地一体化信息管理平台源码,微服务架构JavaSpring Cloud UniApp MySql 智慧工地云平台是专为建筑施工领域所打造的一体化信息管理平台。通过大数据、云计算、人工智能、物联网和移动互联网等高科技技术手段,将施工区域各系统数据汇总,建…

15.Docker-Compose的概念理解及安装

1.Docker-Compose是什么? Docker-Compose是实现对Docker容器集群的快速编排的工具软件。它是Docker官方开源的一个工具软件,可以管理多个Docker容器组成一个应用。你需要定义一个YAML格式的配置文件docker-compose.yml.写好多个容器间的调用关系&#x…

京东大数据(京东运营数据采集):2023年10月京东牛奶乳品行业品牌销售排行榜

鲸参谋监测的京东平台10月份牛奶乳品市场销售数据已出炉! 10月份,牛奶乳品整体销售上涨。鲸参谋数据显示,今年10月,京东平台上牛奶乳品的销量将近1700万,同比增长1%;销售额将近17亿,同比增长约5…

C语言常见算法

算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使…

在ubuntu系统安装SVN服务端,并通过客户端进行远程访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

Python与GPU编程快速入门(三)

3、使用Numba加速Python代码 Numba 是一个 Python 库,它使用行业标准 LLVM 编译器库在运行时将 Python 函数转换为优化的机器代码。 您可能想尝试用它来加速 CPU 上的代码。 然而,Numba还可以将Python 语言的子集转换为CUDA,这就是我们将在这里使用的。 所以我们的想法是,…

【C 语言经典100例】C 练习实例7

题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 程序分析:字符共有256个。不同字符,图形不一样。 VC6.0下出现中文乱码(原因解决方法): 176的16进制是B0,219的16进制是DB&#xf…

常见的6种工业主板盘点

无论您涉及哪种类型的工业环境,主板都是所有电子元件的关键部件之一。可靠且高效的主板是任何功能系统的核心和灵魂。 不同的主板旨在满足不同的需求,如果您希望系统发挥最佳性能,则必须了解这些需求。本文提供了有关当今流行的6种工业主板的…

c语言编程题经典100例——(41~45例)

1,实现动态内存分配。 在C语言中&#xff0c;动态内存分配使用malloc、calloc、realloc和free函数。以下是一个示例&#xff1a; #include <stdio.h> #include <stdlib.h> int main() { int *ptr NULL; // 初始化为空 int n 5; // 假设我们想要分配5个整数…