js-1:JavaScript中的数据类型?存储上有啥差别

news2024/11/29 8:57:30

1、在JavaScript中,共有两种数据类型。
基本类型
复杂类型
区别在于:存储位置不同
2、基本类型
主要分为以下6种:
Number
String
Boolean
Undefined
null
Symbol

Number :
数值最常见的证书类型格式则为十进制,还可以设置八进制(0开头),十六进制(0x开头)
let intNum=55
let num1=070
let hexNum=0xA
浮点类型则在数值汇总中包含小数点,还可以通过科学计数法表示。
let floatNum1=1.1
let floatNum2 =0.1
let floatNum3 = .1 //有效但不推荐
let floatNum=3.125e7 //等于31250000
在数值类型中,存在一个特殊数值Nan,意为“不是数值”,用于表示本来要返回数值的操作失败了(而不是抛出错误)
consol.log(0/0); //NaN
consol.log(-0/+0); //NaN

Undefined:
Undeifined类型只有一个值,就是特殊值undefined,当使用var或者let声明了变量,但是没有初始化时,就相当于给变量赋予了undefined值。
let message
console.log(message==undefined)//True
包含undefined值的变量跟未定义的变量是有区别的
let message //这个变量被声明了,只是值为undefined
console.log(message)//undefined
console.log(age)//没有生命过这个变量,会报错

String:
字符串可以使用双引号“”,单引号‘’,或者反引号
并且字符串是不可变的,一旦被创建,值就不会发生变化
let lang=‘java’
lang=lang+‘script’ //先销毁再创建

Null:
Null类型同样只有一个值,即特殊值null
逻辑上讲,null值表示一个空对象指针,这也是给typeof传一个null,会返回object的原因。
let car = null
console.log(typeof car) // Object
undefined值是由null值派生来的
console.log(null ==undefined)// True
只要变量要保存对象,而当时又没有那个对象可保存,就可用null来填充该变量。

Boolean:
布尔值类型有两个字面值:True和False
通过布尔值可以将其他类型的值转化为布尔值。
数据类型 转化为True的值 转化为False的值
String 非空字符串 “”
Number 非零数值(包括无穷值) 0、NaN
Object 任意对象 null
Undefined N/A(不存在) undefined

Symbol:
Symbol(符号)是原始值,且符号实例是唯一,不可变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。
let genericSymbol=Symbol()
let otherGenericSymbol=Symbol()
consol.log(genericSymbolotherGenericSymbol) //输出false
let fooSymbol=Symbol(“foo”)
let otherFooSymbol=Symbol(“foo”)
consol.log(fooSymbol
otherFooSymbol) //输出false

3、引入类型
复杂类型统称为Object,下面介绍其中三种。
Object
Array
Funcation

Object:创建Object常用方式为对象字面量表示法,属性名可以是字符串或者数值。
let person={
name:“NICL”,
“age”:29,
5:true
};

Array:JavaScript数组是一组有序的数据,但跟其它语言不同,数组中的每个槽位可以存储任意类型的数据,并且,数组也是动态大小的,会随着数组添加而自动增长。
let colors=[“red”,2,{age:20}]
colors.push(2)

Function:函数实际上是对象,每个函数都是Function类型的实例,而Function也有属性和方法,跟其他引用类型一样。
函数存在的三种常见的表达方式:
函数声明:
function sum(num1,num2){
return num1+num2;
}
函数表达式:
let sum=function(num1,num2){
return num1+num2;
}
箭头函数(函数声明和函数表达式两种方式)
let sum =(num1,num2)=>{
return num1+num2;
}

其他引用类型:
除了上述说的三种之外,还包括Date,RegExp,Map,Set等

4、存储区别
基本数据类型和引用数据类型在内存中的位置不同:
基本数据类型存储在栈中
引用类型的对象存储于堆中
当我们把变量赋值给一个变量时,解析器首先要确认的是这个值是基本类型还是引用类型值

基本类型:let a=10;
let b =a;
b=20;
console.log(a) //输出10
a的值为一个基本类型,是存储在栈中,将a的值赋值给b,虽然两个变量相等,但是两个变量保存了两个不同的内存地址。
下图展示了基本类型赋值的过程:
在这里插入图片描述
在这里插入图片描述
引用类型:
var obj1={}
var obj2=obj1;
obj.name=“Xxx”;
console.log(obj1.name); //Xxx
引用类型数据存放在堆中,每个堆内存对象都有对应的引用地址指向它,引用地址存放在栈中。
obj1是一个引用类型,在赋值操作过程中,实际是将堆内存对象在栈内存的引用地址复制了一份给obj2,实际上它们共同指向了同一个堆内存对象,所以更改obj2会对obj1产生影响。
下图演示引用类型赋值过程:
在这里插入图片描述
5、小结
声明变量时不同内存地址的分配:
简单类型的值存放在栈中,在栈中存放的是对应的值
引用类型对应的值存储在堆中,在栈中存放的是指向堆内存的地址

不同的类型数据导致赋值变量时不同:
	简单类型赋值,是生成相同的值,两个对象对应不同的地址
	复杂类型赋值,是将保存对象的内存地址赋值给另一个变量,也就是两个变量指向堆内存中同一个对象。

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

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

相关文章

K8s中的PV和PVC和监控

1.PV和PVC PV:持久化存储,对存储资源进行抽象,对外提供可以调用的地方(类似:生产者) PVC:用于调用,不需要关心内部实现细节(类似:消费者) 2.实…

【Gitee的使用】Gitee的简单使用,查看/创建SSH公匙、创建版本库、拉取代码、提交代码

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 本篇文章简单介绍,如何在Gitee上面创建版本库、拉取…

搭建企业级BI系统有多快?奥威BI表现惊人

搭建BI系统需要建立一个可靠的数据仓库和针对分析工具/UI的数据结构。同时,这个过程需要不断地迭代优化与维护。主要有搭建环境、建设数仓和分析模型、设计数据可视化报表。 不难看出,从零开始搭建企业级BI系统是一个工作量大、程序繁琐的工程&#xff…

Jenkins 使用

Jenkins 使用 文章目录 Jenkins 使用一、jenkins 任务执行二、 Jenkins 连接gitee三、Jenkins 部署静态网站 一、jenkins 任务执行 jenkins 创建 job job的名字最好是有意义的 restart_web_backend restart_web_mysql[rootjenkins ~]# ls /var/lib/jenkins/ config.xml …

AIGC+低代码:征途漫漫,道阻且长

人们总是高估一项科技所带来的短期效益,却又低估它的长期影响。 一、低代码与 AI 深度融合是未来发展趋势 2023 年上半年,随着 Chat GPT 的爆火,AI 在自然语言对话和代码领域的能力引发全世界的关注,现阶段的 AI 真的能将大家带入…

网络编程——MAC地址、IP地址和子网掩码

MAC地址、IP地址和子网掩码 一、MAC地址:硬件身份证 1、MAC地址的概念 MAC地址,即媒体访问控制地址(Media Access Control Address),是一个用于唯一标识网络设备的物理地址。每个网络接口卡(NIC&#xf…

I帧、P帧、B帧、GOP、IDR 和PTS, DTS之间的关系

一.视频传输原理 视频是利用人眼视觉暂留的原理,通过播放一系列的图片,使人眼产生运动的感觉。单纯传输视频画面,视频量非常大,对现有的网络和存储来说是不可接受的。为了能够使视频便于传输和存储,人们发现视频有大量…

用P2PNet进行大豆计数

文章目录 介绍在大豆数据集上可视化结果环境准备数据集结构数据链接模型训练模型推理代码介绍 这个仓库包含了P2PNet(Rethinking Counting and Localization in Crowds: A Purely Point-Based Framework)在大豆数据集上的pytorch实现。 在大豆数据集上可视化结果 环境准备 …

虚继承中对象占用的内存空间

1、虚继承中对象占用的内存空间1 #include <iostream> using namespace std;class AA {void show() {}int max(int a, int b) { return a > b ? a : b; } }; //函数并不占用内存空间class A {}; //占位符class B {int c; }; //含有一个int型数据成员class C :vi…

如何使用本地mock数据

当后端同事接口数据还未完成&#xff0c;我们前端开发需要使用数据时&#xff0c;怎么办呢&#xff1f;这里可以自己本地mock数据先用着啦&#xff01;仅在开发时使用 1. 创建一个 xxx.js文件&#xff0c;对外暴露一个数组&#xff1b; 对新建js文件编写导出&#xff0c;返回数…

创建线程、线程的挂起与恢复、线程的优先级与终止线程

目录 一、创建线程 CreateThread函数&#xff1a; 下面是示例&#xff1a; ​编辑 ThreadProc函数解释&#xff1a; DWORD的本质是 unsigned long PVOID的本质是 void* 二、线程的终止 1.WaitForSingleObject()函数&#xff1a; 示例如下&#xff1a; 2.ExitThread()函…

ChatGPT 作为 Python 编程助手

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本&#xff0c;这似乎是一个合理的起点。 目标 首先&#xff0c;我想尝试…

Elasticsearch同时使用should和must

问题及解决方法 must和should组合查询&#xff0c;should失效。使用must嵌套查询&#xff0c;将should组成的bool查询包含在其中一个must查询中。 SearchRequest request new SearchRequest(); request.indices("function_log");SearchSourceBuilder sourceBuilde…

第56步 深度学习图像识别:CNN梯度权重类激活映射(TensorFlow)

基于WIN10的64位系统演示 一、写在前面 类激活映射&#xff08;Class Activation Mapping&#xff0c;CAM&#xff09;和梯度权重类激活映射&#xff08;Gradient-weighted Class Activation Mapping&#xff0c;Grad-CAM&#xff09;是两种可视化深度学习模型决策过程的技术…

一文教你看懂Golang协程调度【GMP设计思想】

一文教你看懂Golang协程调度【GMP设计思想】 1 Golang调度器的由来 1.1 单进程的问题&#xff1a;进程阻塞、CPU浪费时间 单一执行程序、计算机只能一个任务一个任务来进行处理进程阻塞所带来的CPU浪费时间 1.2 多进程、多线程问题&#xff1a;设计复杂、高内存、CPU占用 设计…

面试热题(倒数第k个结点)

输入一个链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即链表的尾节点是倒数第1个节点。 例如&#xff0c;一个链表有 6 个节点&#xff0c;从头节点开始&#xff0c;它们的值依次是 1、2、3、4、5、6。这个链表…

通过cpolar内网穿透发布网页测试

通过内网穿透发布网页测试 文章目录 通过内网穿透发布网页测试 对于网站开发者来说&#xff0c;对完成的网页进行测试十分必要&#xff0c;同时还要在测试过程中充分采纳委托制作方的意见&#xff0c;及时根据甲方意见进行修改&#xff0c;但在传统的测试方式中&#xff0c;必须…

Scrum是什么意思,Scrum敏捷项目管理工具有哪些?

一、什么是Scrum&#xff1f; Scrum是一种敏捷项目管理方法&#xff0c;旨在帮助团队高效地开展软件开发和项目管理工作。 Scrum强调迭代和增量开发&#xff0c;通过将项目分解为多个短期的开发周期&#xff08;称为Sprint&#xff09;&#xff0c;团队可以更好地应对需求变…

【CSS3】CSS3 2D 转换 - scale 缩放 ③ ( 使用 scale 设置制作可缩放的按钮案例 )

文章目录 一、需求分析二、代码分析三、代码示例四、执行结果 一、需求分析 设置一个 按钮 , 默认状态下显示的样式如下 : 按钮 外部 有 圆形的外边框 ;按钮 中的文本 , 水平居中对齐 , 垂直居中对齐 ; 当鼠标移动到 按钮 上之后 , 鼠标 变为 小手 样式 , 并且 按钮 以 中心位…

实战项目——多功能电子时钟

一&#xff0c;项目要求 二&#xff0c;理论原理 通过按键来控制状态机的状态&#xff0c;在将状态值传送到各个模块进行驱动&#xff0c;在空闲状态下&#xff0c;数码管显示基础时钟&#xff0c;基础时钟是由7个计数器组合而成&#xff0c;当在ADJUST状态下可以调整时间&…