前端数据类型大全及其区别总结

前端数据类型大全及其区别总结

  • 基本数据类型
  • 引用数据类型
  • Null 与 Undefined 的区别
  • Map 与 Object 的区别
  • Set 与 Array 的区别
  • WeekMap 与 Map 的区别
  • WeekSet 与 Set 的区别

基本数据类型

  • Number(数值类型),用于表示数字,包括整数和浮点数。
  • String(字符串类型),用于表示文本,由字符组成,可以使用单引号、双引号或反引号表示。
  • Boolean(布尔类型),表示逻辑值,只有truefalse两个值。
  • Null,表示空的对象引用。
  • Undefined,表示未定义的变量或属性。
  • SymbolES6引入),表示唯一的标识符。
  • BigIntES10引入),用于表示大整数,解决JavaScript中Number类型表示大整数的限制。

引用数据类型

  • Object(对象),由键值对组成,可以包含多个属性和方法。
  • Array(数组),由元素组成的列表,元素可以是任意类型的数据。
  • Function(函数),作为第一类对象,可以在程序中作为参数传递或定义其他函数。
  • Date(日期对象),用于处理日期和时间。
  • MapSet等,用于存储键值对或唯一元素的集合。
  • WeakMapWeakSetES6引入),WeakSet主要用于临时存储对象的集合,以便在不需要时自动释放内存;WeakMap主要用于保存对象的附加数据,可以避免内存泄露的问题。

Null 与 Undefined 的区别

  1. 意义不同
    • null 表示一个值被定义了,定义为“空值”
    • undefined 表示根本不存在
  2. 转换结果不同:undefined转数值为NaNnull转数值为0
  3. 数据类型不同

Map 与 Object 的区别

  • 相同点
    二者都是以key-value形式对数据存储
  • 不同点
    1. key的数据类型范围不同

      • Object可以作为key的有String,Number,symbol
      • Map:目前js的数据类型都可以作为key
    2. key的顺序不同

      • Object:如果对象的key中同时存在String,Number,Symbol,通过Object,keys得到的顺序是Number(升序)–>String(symbol)(以创建的顺序)
      • Mapkey按声明的顺序进行排序
    3. 创建方式不同

      • 创建 Object 实例
        const obj1=new Object()
        const obj2={}
        const obj3=Object.create({})
        
      • 创建 Map 实例
        const map=new Map()
        
    4. key值调用的方式不同

      • 通过key取值:

        Object:可通过 . 或 []
        Map:只能用原生的get方法进行调用;

      • 判断是否有某个属性

        Object: 'a' in obj;判断obj中是否有a这个属性;
        Map: map.has('a');判断map中是否有a这个属性;

    5. 设置属性的方式不同

      • Object设置属性:

        obj.a = 1;
        obj[‘a’] = 1;

      • Map设置属性:

        Map类型中js目前存在的数据类型均可以作为key;
        map.set(‘a’,1)

    6. 删除key的方式不同

      Object删除属性: 自身没有删除属性的方法;一般删除对象属性的方式:
      delete obj.a
      Map删除属性:
      map.delete('a') ----删除a属性;
      map.clear() ----删除所有的属性;

    7. 获取size

      Object: 通过Object.keys(obj) 返回一个数组,通过获取数组的长度来获取size;
      Map: 自身带有size属性:map.sizesize属性无法修改;

    8. 迭代
      Map: 拥有迭代器,可以通过for-of forEach去直接迭代元素,遍历顺序是确定的
      Object: 并没有实现迭代器,需要自行实现,不实现只能通过for-in循环去迭代,遍历顺序是不确定的

      判断一个数据是否可以迭代可通过以下方式:

      	typeof [][Symbol.iterator] //function
      	typeof new Map()[Symbol.iterator] //function
      	typeof {}[Symbol.iterator] //undefined
      	typeof 1[Symbol.iterator] //undefined
      
    9. JSON操作
      Object: 支持JSON.stringify和JSON.parse的操作;
      Map: 不支持;

    10. this不同

      	const f = function(){ console.log(this) }
      	Object:
      	const obj = {fn:f}
      	Map:
      	const map = new Map()
      	map.set('fn',f)
      	
      	obj.fn() //指向obj
      	map.get('fn')() //取决于函数的调用者;
      

Set 与 Array 的区别

  1. 初始化方式不同:
    • Set使用new Set()初始化
    • Array使用[]或new Array()初始化。
  2. 存储数据重复性:
    • Array存储重复的数据
    • Set只能存储唯一的值(不允许重复)。
  3. 长度和成员管理方式不同:
    • Array的长度可以动态变化,可以通过索引访问和修改元素
    • Set的长度是固定的,且成员都是唯一的,不能通过索引访问或修改。
  4. 方法和属性不同:
    • Array有许多方法如push(), .pop(), .splice()
    • Set只有一些基本的方法如add(), .delete(), .has()等。

WeekMap 与 Map 的区别

  1. MapWeakMap 都属于 ES6 中新增的数据类型,用于存储键值对。
  2. Map 是一个普通的键值对集合,可以使用任何类型的值作为键或值,包括基本类型和对象。而 WeakMap 的键必须是对象,值可以是任何类型。
  3. Map 中的键值对是强引用关系,即只要 Map 中的键或值存在,Map 对象就会一直保留这个键值对,不会被垃圾回收。而 WeakMap 中的键值对是弱引用关系,如果 WeakMap 的键不再被引用,那么这个键值对就会被自动删除。
  4. 由于 WeakMap 中的键是弱引用,所以 WeakMap 对象的 size 属性无法访问,也无法使用 forEach() 和 clear() 等方法。
  5. WeakMap 对象的主要应用场景是需要与另外一个对象关联,并且不想影响到这个对象的垃圾回收机制,以避免内存泄漏。例如,将对象存储在 WeakMap 中,可以确保这个对象只在其他地方仍然被引用时才被保留,否则会自动被删除,从而避免内存泄漏。

WeekSet 与 Set 的区别

  1. WeekSet的只能存储引用类型的值,不能存放普通类型的值;Set都可以
  2. WeekSet里的值都是弱引用,垃圾回收机制运行前后,Set内成员数量可能不一样,只要没有其他(不考虑WeekSet)变量或属性引用,这个对象就会被垃圾回收
  3. WeekSet不能够被遍历,也无法获取全部成员

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Grass注册不了、按钮灰色的解决方案

近期相信grass挂机项目不少人有所有接触。还有不了解这个项目的可以看看博客: http://t.csdnimg.cn/bI4UO 但是不少人注册时遇到无法注册的问题,或者是注册按钮显示灰色,放上鼠标时显示禁止。这也是博主在尝试时遇到的问题。 经过探索&…

如何解决python安装mysqlclient失败问题

在使用Django等框架来操作MySQL时,实际上底层还是通过Python来操作的,首先需要安装一个驱动程序,在Python3中,驱动程序有多种选择,比如有pymysql以及mysqlclient等。使用pip命令安装mysqlclient失败应如何解决&#xf…

【Linux实践室】Linux高级用户管理实战指南:Linux用户与用户组编辑操作详解

🌈个人主页:聆风吟_ 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔Linux查看用户属性命令2.1.1 👻…

测试用例的编写评审

1、什么叫软件测试用例 什么是测试用例 测试用例(TestCase) 是为项目需求而编制的一组测试输入、执行条件 以及预期结果,以便测试某个程序是否满足客户需求。–测试依据 可以总结为:每一个测试点的数据设计和步骤设计。–测试用例 2、测试用例的重要性(了解) 2.1…

社媒矩阵运营解决方案:海外云手机

在全球化的浪潮下,企业愈发认识到通过海外社交媒体平台扩大影响力、树立品牌形象及抢占国际市场的巨大机遇。因此,运营海外社交媒体账户已逐渐成为企业战略部署的重要组成部分。为了全面捕捉多渠道的流量,众多企业选择同时运营多个平台的多个…

基于Spring Boot的校园招聘系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

基于SkyEye运行Qt:著名应用程序开发框架

Qt是一个著名的跨平台的C图形用户界面应用程序开发框架,目前包括Qt Creator、Qt Designer等等快速开发工具,还支持2D/3D图形渲染、OpenGL,允许真正的组件编程,是与GTK、MFC、OWL、ATL一样的图形界面库。使用Qt开发的软件可以做到一…

抖音直播间没流量怎么办?如何快速提升直播间人气?

抖音直播间人气低迷,是否因为投入的资金不足或是数据表现不够抢眼而让你感到困惑?要提升抖音直播间的人气,首先需要深入了解抖音的推荐逻辑,探究直播间人气的真正来源。 抖音直播间的人气来源有哪些? 抖音直播间人气…

SpringMVC核心流程解析

SpringMVC核心流程解析 DispatcherServlet的继承关系请求流程分析获取HandlerChain(ControllrtMethod拦截器)获取HandlerAdapter handlerMappings的初始化过程 DispatcherServlet的继承关系 DispatcherServlet本质是一个servlet,既然是servlet,一个请求…

Pytorch-自动微分模块

🥇接下来我们进入到Pytorch的自动微分模块torch.autograd~ 自动微分模块是PyTorch中用于实现张量自动求导的模块。PyTorch通过torch.autograd模块提供了自动微分的功能,这对于深度学习和优化问题至关重要,因为它可以自动计算梯度&#xff0c…

视觉位置识别与多模态导航规划

前言 机器人感知决策是机器人移动的前提,机器人需要对周围环境实现理解,而周围环境通常由静态环境与动态环境构成。机器人在初始状态或者重启时需要确定当前所处的位置,然后根据用户的指令或意图,开展相应移动或抓取操作。通过视觉…

Mamba:使用选择性状态空间的线性时间序列建模

本文主要是关于mamba论文的详解~ 论文:Mamba: Linear-Time Sequence Modeling with Selective State Spaces 论文地址:https://arxiv.org/ftp/arxiv/papers/2312/2312.00752.pdf 代码:state-spaces/mamba (github.com) Demo:state-spaces (St…

Java 算法篇-深入了解 BF 与 KMP 算法

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 BF 算法概述 1.1 BF 算法实际使用 2.0 KMP 算法概述 2.1 KMP 算法实际使用 2.2 相比于 BF 算法实现,KMP 算法的重要思想 2.3 为什么要这样设计&#x…

C++面向对象程序设计-北京大学-郭炜【课程笔记(六)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;六&#xff09;】 1、可变长数组类的实现2、流插入运算符和流提取运算符的重载2.1、对形如cout << 5 ; 单个"<<"进行重载2.2、对形如cout << 5 << “this” ;连续多个"<<&…

地埋电缆故障检测方法有哪些?地埋电缆故障检测费用是多少?

地埋电缆故障检测方法主要涵盖脉冲反射法、桥接法、高压闪络法和声波定位法等多种方法。选择适当的方法取决于故障类型、电缆类型和实际现场条件。至于地埋电缆故障检测费用则受到多个因素的影响&#xff0c;包括故障类型、检测方法的复杂性、检测设备的先进程度以及所处地区的…

【强化学习的数学原理-赵世钰】课程笔记(十)Actor-Critic 方法

目录 一.最简单的 actor-critic&#xff08;QAC&#xff09;&#xff1a;The simplest actor-critic (QAC) 二.Advantage actor-critic (A2C) 三.Off-policy actor-critic 方法 四. Deterministic actor critic(DPG) Actor-Critic 方法把基于 value 的方法&#xff0c;特别…

删除顺序表中所有值为X的元素(顺序表,单链表)

目录 时间复杂度为O(1)(顺序表)&#xff1a;代码实现&#xff1a; 运行结果&#xff1a; 时间复杂度为O(n)(顺序表)&#xff1a;代码实现&#xff1a; 运行结果&#xff1a; 单链表&#xff1a;时间复杂度o&#xff08;n&#xff09;:代码实现&#xff1a; 时间复杂度为O(1…

调研-转换zpl为png

文章目录 前言ZPLZPL相关转换的网站一、labelary常用功能 二、labelzoom三、https://www.htmltozpl.com/docs/demo/html-to-zpl四、 开源仓库&#xff1a;JSZPL五、 开源仓库&#xff1a;BinaryKits.Zpl六 redhawk其他相关概述Lodop 处理zpl 前言 为了解决ZPL指令转换为png&am…

软件需求开发和管理过程性指导文件

1. 目的 2. 适用范围 3. 参考文件 4. 术语和缩写 5. 需求获取的方式 5.1. 与用户交谈向用户提问题 5.1.1. 访谈重点注意事项 5.1.2. 访谈指南 5.2. 参观用户的工作流程 5.3. 向用户群体发调查问卷 5.4. 已有软件系统调研 5.5. 资料收集 5.6. 原型系统调研 5.6.1. …

Cesium中实现镜头光晕

镜头光晕 镜头光晕 (Lens Flares) 是模拟相机镜头内的折射光线的效果&#xff0c;主要作用就是让太阳光/其他光源更加真实&#xff0c;和为您的场景多增添一些气氛。 Cesium 中实现 其实 Cesium 里面也是有实现一个镜头光晕效果的&#xff0c;添加方式如下&#xff0c;只是效…