JavaScript的数据类型和数据类型的检测

news2024/7/6 18:04:31

目录

数据类型

数据类型的检测

 🎁更多干货

完整版文档下载方式:


数据类型

JavaScript的基础数据类型有,NaN    string   undefined    Null      Boolen    Symbol    Bigint   这些都是基础数据类型,还有一个引用数据类型,object。

而object又分为 ,array(数组),regexp(正则表达式) ,date(日期), math(数学函数), function(函数)

基础数据类型会存在栈内存中,这种储存在复制的时候会创建一个完全一样的变量

引用数据类型会存在堆内存中。

数据类型的检测

数据类型的检测主要分为三类

1.typeof

typeof方法可以检测基础数据类型,用法如 

var a=1

conselo.log(typeof a)//number

或者typeof(a)

注意

在使用typeof的时候是无法判断引用数据类型的,如果知识用于判断基础数据类型的话建议写一个if判断

判断是否为基础数据类型,如果不是就进行下一步验证

2.instanceof

通过instaneof能判断这个函数是否为之前那个构造函数生成的对象,用法如: 

 let car = function () { }



        let bwm = new car()

        console.log(bwm instanceof car);//true

        let Car = new String('x7')

        console.log(Car instanceof String);//true

        let str = "ccc"

        console.log(str instanceof String);//false

如何自己写一个验证方法?

function myInstanceof(left, right) {

  // 这里先用typeof来判断基础数据类型,如果是,直接返回false

  if(typeof left !== 'object' || left === null) return false;

  // getProtypeOf是Object对象自带的API,能够拿到参数的原型对象

  let proto = Object.getPrototypeOf(left);

  while(true) {                  //循环往下寻找,直到找到相同的原型对象

    if(proto === null) return false;

    if(proto === right.prototype) return true;//找到相同原型对象,返回true

    proto = Object.getPrototypeof(proto);

    }

}

// 验证一下自己实现的myInstanceof是否OK

console.log(myInstanceof(new Number(123), Number));    // true

console.log(myInstanceof(123, Number));                // false

instanceof可以准确的判断数据的引用类型,但是无法判断基础数据类型

注意:为了代码的严谨性,不建议单独用typeof或者instanceof,建议两者混合编写


 🎁更多干货


完整版文档下载方式:

这些资料,对于从事【软件测试】等相关工作的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享。

在评论区和我互动交流或者私❤我【软件测试学习】领取即可,拿走不谢。


如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!

 

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

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

相关文章

2. CSS3的新特性

2.1CSS3的现状 ●新增的CSS3特性有兼容性问题, ie9才支持 ●移动端支持优于PC端 ●不断改进中 ●应用相对广泛 ●现阶段主要学习: 新增选择器和盒子模型以及其他特性 CSS3给我们新增了选择器,可以更加便捷,更加自由的选择目标元素: 1.属性选择器 2.结构伪类选择器…

中介者(Mediator)模式

目录 动机使用场景参与者协作效果实现相关模式应用和思考 中介者(Mediator)是对象行为模式,用一个中介对象来封装一系列对象的交互。中介者使各对象不需要显式的相互应用,从而使其耦合松散,而且可以独立的改变他们之间的交互 动机 面向对象设…

光学卷积处理芯片---自动驾驶高性能运算平台的福音?

摘要: 本文提到的在低损耗氮化硅平台上制造的紧凑片上光学卷积处理单元,可以展示出其大规模集成的能力。 深度学习的处理模式是我们在在自动驾驶环境目标分类、识别、跟踪等场合下不可或缺的重要一环。随着自动驾驶技术的不断演进,要求处理的…

怎么学习核心Java相关的技术和知识? - 易智编译EaseEditing

学习核心Java相关的技术和知识可以按照以下步骤进行: 学习Java基础: 从Java语言的基础知识开始学习,了解语法、数据类型、运算符、控制流程等基本概念。 可以通过在线教程、书籍或学习资源进行自学,如Oracle官方的Java教程、Ja…

funbox2靶场笔记

信息收集开放21,22,80端口 21端口存在ftp匿名访问,下载压缩包,有密码,直接破解 ftp简单命令 ftp ip anonymous#匿名用户 ls cd pwd lpwd get pwd mget 使用工具fcrackzip fcrackzip -D -u -p rockyou.txt tom.zip -D 使用字典 rockyou字…

反射的基础部分知识

反射的基础——Class Java当中的类用来表示具有相同属性和方法的对象的集合,是抽象的概念。对象是类创建的,同一个类的不同对象具有不同的属性值。 Java当中定义的所有类都属于同一类事物,可以Class来表示。 类型 访问方法 返回值类型 说…

MySQL数据库管理(二)

文章目录 一.表结构(增加字段)1.创建表结构2.复制数据表2.1 复制格式2.2 克隆表 3.清空表,删除表内的所有数据4.创建临时表 二.MySQL中6种常见的约束1.外键的定义2.创建外键约束作用3.创建主表blue4.创建从表Icecream5.为主表blue添加一个主键约束。主键名建议以&qu…

JAVA - 内存管理

目录 内存管理是什么 JVM内存区域组成 程序计数器PC java虚拟机栈 本地方法栈 JAVA堆 方法区 常量池 运行时常量池 内存管理是什么 Java的内存管理就是对象的分配和释放问题 分配 :内存的分配由程序完成的,程序员通过关键字new 为每个对象申请…

mysql视图的简单应用

1、创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。 create view stu_info(姓名,性别,课程名,成绩) as select Sname,Ssex,Cname,Score from Course,SC,Student where Student.Sno SC.Sno and SC.Cno Course.Cno;去查看视图 …

混合云监控

混合云基础架构的增长是由增强的灵活性、成本优化机会以及对敏捷 DevOps 文化的支持等优势推动的。另一方面,在混合云环境中很难实现可见性、问责制和控制,这被证明是混合云成功的障碍。尽管公共云提供商提供了用于监控服务可用性的控制台,但…

将媒体公司资产迁移到 Amazon S3 的技术方案

随着媒体公司的发展,他们在仓库中积累了大量的旧磁带和未数字化的视频。这些资产可能很有价值,但以目前的形式很难访问和货币化。此外,将这些资产存储在仓库中既有风险又昂贵。 媒体企业可以通过将其资产迁移到云存储来解决这些问题&#xf…

MySQL练习题(5)

创建表并插入数据 1、创建一个可以统计表格内记录条数的存储函数 ,函数名为count_sch() select count_sch() 2、创建一个存储过程avg_sai,有3个参数,分别是deptno,job,接收平均工资, 功能查询emp表dept为30…

开放式蓝牙耳机测评!2023年值得入手的开放式蓝牙耳机都在这里!索尼、南卡、韶音、飞利浦等等品牌,看看有没有适合你的款式!

这可能是站内最详细的开放式蓝牙耳机选购攻略!想入手开放式蓝牙耳机必看! 在这个人人手机不离手的快节奏时代,蓝牙耳机自然是越多越多人的选择,而随着耳机种类的进化代送,开放式蓝牙耳机,也随之被大众熟知…

【面试题39】能够使HTML和PHP分离开使用的模板技术有哪些

文章目录 一、前言二、模板技术的好处三、常用的模板技术3.1 PHP模板引擎3.2 前端模板引擎3.3 前后端分离技术 四、Smarty模板使用演示4.1 在项目中引入Smarty模板引擎的文件4.2 引入Smarty.class.php文件4.3 创建一个Smarty对象4.4 变量定义4.5 创建一个Smarty模板文件4.6 绑定…

无需魔法三分钟上线Midjourney应用,【附源码】【示例】

ps:我是标题党,目前还没见过三分钟完成任务的,三分钟只能打通Midjourney接口。我花了一天时间接入应用哈哈哈! 首先,我要感谢laf赞助我,让我可以免费使用Midjourney进行开发和测试。来自白嫖党的快乐。 其次&#xff…

基于linux下的高并发服务器开发(第一章)- 静态库和动态库的对比1.9

01 / 程序编译成可执行程序的过程 静态库、动态库区别来自链接阶段如何处理,链接成可执行程序。分别称为静态链接方式和动态链接方式。 02 / 静态库的制作过程 03 / 动态库的制作过程 04 / 静态库的优缺点 05 / 动态库的优缺点

[工具推荐] LICEcap 动图gif录制工具 轻量/开源/免费

先声明:不是广子,单纯分享 LICEcap 之前用Windows时,就用这个软件 后来用mac了,发现它也有mac版的,也支持m1芯片的苹果电脑 这是目前用过最轻量的gif录制软件了, 程序整体都不到1mb 该有的功能都有&a…

『表面』无序点云的快速三角化

1、PCL中的贪婪投影三角化(GreedyProjectionTriangulation)算法 该算法用于将无序点云数据转换为表面三角网络模型的表面重建算法。可以根据点云数据中的几何信息,自动构建出具有连续性和平滑性的三角网络模型。 具体步骤: 预处…

马斯克在与创业公司OpenAI竞争的新竞标中公布了xAI

北京时间7月13日凌晨,马斯克在Twiiter上毫无预警地宣布:“xAI正式成立,去了解现实。”(Announcing formation of xAI to understand reality.)这是马斯克首次官宣xAI的进展。 xAI的Twitter账号中目前还没有多少内容&a…

嵌入式Linux开发实操(四):pinctrl和dt_binding

Linux/pinctrl subsystem,统一了各SOC/MCU厂商的PIN引脚管理了吗? pin命名遵循IC spec上的命名。它是如何实现驱动到硬件的对接的呢?在CPU、Memory等完成初始化加载之后,显然就进入到了嵌入式linux的核心部分,管理对接硬件,这正是pinctrl要完成的工作。 Linuxpinctrl架构…