js【详解】数据类型原理(含变量赋值详解-浅拷贝)

简介: js【详解】数据类型原理(含变量赋值详解-浅拷贝)

JavaScript 中的数据按存储方式的不同,分为值类型和引用类型。

  • 值类型(共 5 种):赋值的时候传值 —— 数字、字符串、布尔值、undefined,Symbol
  • 引用类型 :赋值的时候传引用的地址—— 如对象,数组,null , 函数
  • null 是特殊的引用类型,引用的空地址
  • 函数也是特殊的引用类型,因为函数引用的地址指向的内容不是一个数值,而是一段可执行代码。

声明变量后,js引擎会在栈内存中开辟一个以该变量命名的存储空间,若未赋值,则该空间内存的值类型的数据 undefined。

  • 变量赋值时,若数据为值类型,则会将数据的值存入该变量命名的空间。(即变量中存的数据的值)
  • 存有值类型数据的变量赋值给另一个变量时,会将数据的值复制一份,存入新变量命名的空间中,两个变量内存储的数据相互独立,互不影响(改变A变量的值,B变量的值不会发生改变)
  • 变量赋值时,若数据为引用类型,则会先将引用类型的数据保存在堆内存中,再将该数据在堆内存中存储的地址存入该变量命名的空间。(即变量中存的是数据的引用地址)
  • 存有引用类型数据的变量赋值给另一个变量时,会将数据的引用地址复制一份,存入新变量命名的空间中(浅拷贝),两个变量实际指向的是同一份数据,相互影响(改变A变量的值,B变量的值也会同步改变)

之所以这样设计,是因为引用类型的数据通常较大,拷贝时需要花费更多的时间和空间,引用类型浅拷贝的设计,提升了数据的拷贝速度和内存空间的使用效率,从而表现出了更佳的性能。

目录
相关文章
|
存储 安全 固态存储
阿里云aca考试通过率以及试题
不同于阿里云认证的其他考试,阿里云aca考试科目非常多,难度自然是比较高的,那么阿里云aca考试通过率怎么样呢?接下来为我们详细介绍阿里云aca考试通过率以及阿里云aca考试试题。
1627 0
阿里云aca考试通过率以及试题
|
JSON 缓存 Java
企业微信开发OA审批
企业微信开发OA审批
1506 0
|
JavaScript
Vue2文字提示(Tooltip)
这篇文章介绍了如何在Vue 3框架中创建一个文字提示组件(Tooltip),允许自定义提示框的最大宽度、展示文本和提示文本,支持鼠标悬停显示和隐藏效果。
784 0
Vue2文字提示(Tooltip)
|
弹性计算 运维 自然语言处理
OS Copilot 产品体验评测
**Copilot 是AI编程助手,助力开发者通过代码自动补全、智能建议提升效率。支持多种语言,理解自然语言,可在VS Code等编辑器中使用。阿里云的OS Copilot适用于网络运维,简化配置管理和故障排查。用户反馈表示,虽然有初始设置需求,但能大幅提高工作效率,尤其在自动化和故障解决上。用户期待更多功能扩展,如更多设备支持和智能报错分析。**
444 2
OS Copilot 产品体验评测
|
JavaScript
vue中watch监听路由传来的参数变化问题
vue中watch监听路由传来的参数变化问题
666 0
|
前端开发 JavaScript
JavaScript中链式调用大合集、应付面试够够的
JavaScript中链式调用大合集、应付面试够够的
283 0
|
JavaScript
uniapp中复选框的使用
uniapp中复选框的使用
710 0
|
存储 Java API
如何使用 Java 中的 API 更改 PDF 纸张大小
如何使用 Java 中的 API 更改 PDF 纸张大小
434 11
|
JavaScript
vue实现多个el-form表单提交统一校验的2个方法
vue实现多个el-form表单提交统一校验的2个方法
1396 0
|
数据采集 XML JSON
「Python入门」Python代码规范(风格)
**Python编码规范摘要** - 编码:使用UTF-8编码,文件开头可声明`# -- coding: utf-8 --`。 - 分号:避免在行尾使用,不用于分隔命令。 - 行长:不超过80字符,长表达式可使用括号换行。 - 缩进:使用4个空格,禁止混用tab。 - 注释:行注释始于`#`和空格,块注释和文档注释遵循特定格式。 - 空行:函数和类定义间用2空行,方法间1空行,内部适当空行。 - 空格:运算符两侧各空一格,逗号后空格,括号内不空格。 - 命名:模块小写,变量下划线分隔,类驼峰式,布尔变量前缀`is_`。 - 引号:保持一致性,可使用单引号或双引号。
2146 1
「Python入门」Python代码规范(风格)