当前位置: 首页 > news >正文

前端JavaScript篇之JavaScript有哪些数据类型,它们的区别?

目录

  • JavaScript有哪些数据类型,它们的区别?
    • 数据类型
    • 区别


JavaScript有哪些数据类型,它们的区别?

数据类型

JavaScript数据类型有: Undefined、Null、Boolean、Number、String、Array、Object、Symbol、BigInt…

  1. String(字符串): 表示文本数据,使用单引号或双引号包裹。
let myString = 'Hello, World!'
  1. Number(数字): 表示数值,可以是整数或浮点数。
let myNumber = 42
  1. Boolean(布尔): 表示逻辑值,可以是 truefalse.
let isTrue = true
  1. Undefined(未定义): 表示未赋值或不存在的值.
let myUndefined
  1. Null(空值): 表示空值或没有对象值.
let myNull = null
  1. Symbol(符号): 引入于ES6,表示唯一的、不可变的值.
let mySymbol = Symbol('unique')
  1. BigInt(大整数): 引入于ES2020,表示任意精度的整数.
let bigIntNumber = 123n
  1. Object(对象): 表示复杂数据结构,可以包含属性和方法.
let myObject = { key: 'value', number: 42 }
  1. Array(数组): 一种有序的集合,用于存储一组相关的数据。它可以包含各种类型的元素,包括数字、字符串、对象等。
let myArray = [1, 'Hello', { key: 'value' }, true]

新增类型:

  • Symbol(符号): 代表创建后独一无二且不可变的数据类型,用于解决可能出现的全局变量冲突问题。

  • BigInt(大整数): 是一种数字类型的数据,可以表示任意精度格式的整数,用于安全地存储和操作大整数,即使超出了 Number 能够表示的安全整数范围。

数据类型分类:

  • 原始数据类型(栈中存储):

    • Undefined、Null、Boolean、Number、String。
    • 直接存储在栈中的简单数据段,占据空间小、大小固定,适合存储频繁使用的数据。
  • 引用数据类型(堆中存储):

    • Object、Array、Symbol、BigInt。
    • 存储在堆中的对象,占据空间大、大小不固定。在栈中存储了指向堆中实体的指针,解释器通过指针检索引用值。

堆和栈的概念:

  • 数据结构中的栈和堆:

    • 栈中数据的存取方式为先进后出。
    • 堆是一个优先队列,按优先级进行排序,优先级可以按照大小规定。
  • 操作系统中的栈和堆:

    • 栈区内存由编译器自动分配释放,存放函数的参数值、局部变量的值等,操作方式类似于数据结构中的栈。
    • 堆区内存一般由开发者分配释放,如果开发者不释放,可能由垃圾回收机制回收。

这些数据类型在JavaScript中被广泛使用,可以根据需要选择合适的数据类型来存储和处理数据。注意,JavaScript是一种动态类型的语言,变量的数据类型可以在运行时改变。

区别

  • 存储位置:

    • 基本数据类型: 存储在栈中的简单数据段,占据空间小、大小固定。
    • 复杂数据类型: 存储在堆中的对象,占据空间大、大小不固定。在栈中存储了指向堆中实体的指针,解释器通过指针检索引用值。
  • 变量赋值:

    • 基本数据类型: 通过值进行赋值,变量直接存储数据的值。
    • 复杂数据类型: 存储在堆中,变量存储的是对象的引用,即地址。
  • 复制行为:

    • 基本数据类型: 拷贝的是实际的值,互不影响。
    • 复杂数据类型: 拷贝的是引用,指向同一对象,一个对象的改变会影响另一个对象。
  • 比较行为:

    • 基本数据类型: 比较的是值是否相等。
    • 复杂数据类型: 比较的是引用是否相同,即是否指向同一对象。
  • 传递方式:

    • 基本数据类型: 通过值传递。
    • 复杂数据类型: 通过引用传递。

这些区别影响了变量在内存中的存储和操作方式,了解这些特性有助于更好地理解JavaScript中的数据类型。

持续学习总结记录中,回顾一下上面的内容:
JavaScript数据类型有: Undefined、Null、Boolean、Number、String、Array、Object、Symbol、BigInt…

相关文章:

前端JavaScript篇之JavaScript有哪些数据类型,它们的区别?

目录 JavaScript有哪些数据类型,它们的区别?数据类型区别 JavaScript有哪些数据类型,它们的区别? 数据类型 JavaScript数据类型有: Undefined、Null、Boolean、Number、String、Array、Object、Symbol、BigInt… St…...

LeetCode---380周赛

题目列表 3005. 最大频率元素计数 3006. 找出数组中的美丽下标 I 3007. 价值和小于等于 K 的最大数字 3008. 找出数组中的美丽下标 II 一、最大频率元素计数 这题就是个简单的计数题,正常遍历统计数据即可,关键是你要会写代码逻辑。 代码如下&…...

archlinux 如何解决安装以后没有声音的问题

今天安装完archlinux以后发现看视频没声音 检查一下是否有 /lib/firmware/intel/sof 发现没有 如果你也是这样的话,可以尝试安装: sudo pacman -S sof-firmware 重启后再看看有没有声音: reboot 反正我有声音了...

什么是ORM思想?

1. ORM概念 ORM(Object Relational Mapping)对象关系映射模式,是一种技术,解决了面向对象与关系型数据库存互不匹配的现象。 ORM在业务逻辑层和数据库层之间充当了桥梁的作用。 2. ORM由来 在软件开发的过程中,通常…...

设计接口时,为其添加签名鉴权---详细教程

一、何为签名 我们知道无论是restful api还是传统接口、亦或是其他形式接口的调用,接口签名都是非常重要的安全机制,它可以确保请求的发起者是经过认证和授权的客户端,同时也可以防止接口被攻击,请求参数被篡改等等。 用大白话来解…...

5G+物联网:连接万物,重塑智慧社区,开启未来生活新纪元,助力智慧社区的革新与发展

一、5G与物联网:技术概述与基础 随着科技的飞速发展,第五代移动通信技术(5G)和物联网(IoT)已经成为当今社会的热门话题。这两项技术作为现代信息社会的核心基础设施,正深刻地改变着人们的生活和…...

[反转链表] [合并两个有序链表][分割链表]

这里写目录标题 反转链表合并两个有序链表分割链表 反转链表 1、题目: 2.思路  思路1:建立一个newHead,取一个节点进行头插。具体做法如下! 建立一个newHead(新头),由于一个节点里面存的是下一个节点的地址,如果取…...

中文数据让LLM变笨?

我这里先贴一下论文的原链接: https://arxiv.org/abs/2401.10286 然后贴一下我翻译标注的下载链接:https://gitee.com/chatpaper/arXiv_top_chinese/blob/master/0801_top/%E4%B8%AD%E6%96%87%E4%BC%9A%E8%AE%A9LLM%E5%8F%98%E7%AC%A8%EF%BC%9F.pdf 先…...

【代码随想录】刷题笔记Day54

前言 差单调栈就结束代码随想录一刷啦,回家二刷打算改用python补充进博客,小涛加油!!! 647. 回文子串 - 力扣(LeetCode) 双指针法 中心点外扩,注意中心点可能有一个元素可能有两个…...

二.Winform使用Webview2在Demo1中实现地址简单校验

Winform使用Webview2在Demo1中实现地址简单校验 往期目录回顾添加对于的简单url验证提示通过上节和本节涉及到的函数有 往期目录 往期相关文章目录 专栏目录 回顾 通过一.Winform使用Webview2(Edge浏览器核心) 创建demo(Demo1)实现回车导航到指定地址 我们已经知道了解决资源…...

从0开始学习C++ 第二十课:模板与泛型编程

第二十课:模板与泛型编程 学习目标: 掌握模板的基本语法和概念。学会使用函数模板来创建可重用的函数。学习如何定义类模板以实现数据结构的泛型。理解模板在C中提供的灵活性和强大功能。 学习内容: 模板的概念: 模板是C中支持…...

pcl之滤波器(一)

pcl滤波器 pcl一共是有十二个主要模块,详细了解可以查看官网。https://pcl.readthedocs.io/projects/tutorials/en/latest/#basic-usage 今天学习一下pcl的滤波器模块。 滤波器模块,官网一共是提供了6个例程,今天先来看第一第二个。 直通…...

java项目性能优化(MyBatis中开启查询缓存及flushCache与useCache的使用)

在java项目中,如果需要大量的DB查询,导致缓存过多,项目运行缓慢,可以设置在select查询时,添加二级缓存的清空。 如果没有去配置flushCache、useCache,那么默认是启用缓存的。 1,flushCache默认…...

Unity3D控制人物移动的多种方法

系列文章目录 unity知识点 文章目录 系列文章目录前言一、人物移动之键盘移动1-1、代码如下1-2、效果 二、人物移动之跟随鼠标点击移动2-1、代码如下2-2、效果 三、人物移动之刚体移动3-1、代码如下3-2、效果 四、人物移动之第一人称控制器移动4-1、代码如下4-2、效果 五、And…...

无人机打击激光器

激光器的应用非常广泛,涵盖了多个领域。以下是一些主要的激光器应用: 医疗领域:激光器在医疗行业中有着重要应用,比如用于激光手术(如眼科手术)、皮肤治疗、牙科治疗、肿瘤治疗等。 工业制造:在…...

Lingo数学建模基础

1.基本运算符 1.1算数运算符 1.2逻辑运算 #not# 否定操作数的逻辑值,一元运算符 #eq# 若两运算数相等,则为true,否则为false #ne# 若两运算数不相等,则为true,否则为false #gt# 若左边运算数严格大于右边,则为true,否则为…...

finalshell连接linux的kali系统

kali的ssh服务似乎是默认关闭的,笔者在玩CentOS系统时可以直接用finalshell完成连接,但kali不行,需要先手动开启ssh服务。 开启kali的ssh服务 输入【ssh start】命令开启ssh服务,可以用【ssh status】命令查看ssh状态&#xff0c…...

2、Line Charts折线图

可视化时间趋势 现在你已经熟悉了编码环境,是时候学习如何制作自己的图表了! 在本教程中,您将学习足够的Python来创建专业外观的折线图。然后,在接下来的练习中,您将使用您的最新技能处理真实世界的数据集。 本课程数据集夸克网盘下载链接:https://pan.quark.cn/s/a235ac…...

shell脚本获得所有数据库备份(整库备份,表级备份)

数据库备份到天翼云对象存储OBS https://blog.csdn.net/qq_34631220/article/details/135755894 1、获得所有数据库 #!/bin/sh HOSTNAME"ip" #数据库信息 PORT"3306" USERNAME"root" PASSWORD"" DBNAME"yusuan" #数据库…...

REVIT二次开发万能刷

将这两个参数赋予其他参数 步骤2 将来做个可以调控的版本 using System; using System.Collections.Generic; using System.Lin...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...