热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JS数据在内存中的存储方式

概要:Js数据类型在内存中的存储形式Js数据类型:简单数据类型(基本数据类型):Number、String、Boolean、Undefined、Null复杂数据类型(引

概要:Js数据类型在内存中的存储形式......


Js数据类型:



  • 简单数据类型(基本数据类型):Number、String、Boolean、Undefined、Null

  • 复杂数据类型(引用数据类型):Object、Array、Function


数据结构:



  • 常用的数据结构:数组、栈、堆、列表、链表、图、树

  • Js上述两种数据类型使用两种数据结构:栈(先进后出)、堆(特殊的树形结构)


数据存储方式:


1、简单数据类型:

​ 简单数据类型保存在栈中,这些类型在内存中别占有固定大小,他们的值保存在栈空间,按值访问。变量在声明过程中,会在栈中开辟一段内存空间,变量值直接存在该内存中,变量读写的是它们实际保存的值。

​ 简单数据数据复制时,会为新声明的变量直接开辟一段新空间, 然后把值复制到为新变量分配的空间中

​ 简单数据类在当前执行环境结束时销毁。


2、复杂数据类型:

​ 复杂数据类型是不固定大小的数据,但是存放他们的地址大小是固定的,所以把地址保存在栈中,值保存在堆中。复杂数据类型是一个指针,指针保存在栈中,但是指针指向的是堆。即存储复杂数据类型的变量保存在栈中,数据本身保存在堆中。读取其数据时,先访问栈中的地址,通过地址找到存在堆中的数据。

​ 复杂数据类型在进行拷贝的时候,分为深拷贝和浅拷贝:

​ 浅拷贝:复制的是引用地址,所以拷贝的变量存储的引用地址和原来的指向堆中同一个地址。

​ 深拷贝:栈中开辟一段新的空间存储复制的变量,堆中开辟一个新的空间存储复制的内容,栈中变量存储的引用地址指向堆中复制的一个新的地址。



推荐阅读
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 基于SSM框架的在线考试系统:随机组卷功能详解
    本文深入探讨了基于SSM(Spring, Spring MVC, MyBatis)框架构建的在线考试系统中,随机组卷功能的设计与实现方法。 ... [详细]
  • 深入解析 C++ 中的 String 和 Vector
    本文详细介绍了 C++ 编程语言中 String 和 Vector 的使用方法及特性,旨在帮助开发者更好地理解和应用这两个重要的容器。 ... [详细]
  • 本文详细介绍了在Luat OS中如何实现C与Lua的混合编程,包括在C环境中运行Lua脚本、封装可被Lua调用的C语言库,以及C与Lua之间的数据交互方法。 ... [详细]
  • ASP.NET 进度条实现详解
    本文介绍了如何在ASP.NET中使用HTML和JavaScript创建一个动态更新的进度条,并通过Default.aspx页面进行展示。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • 本文探讨了一种常见的C++面试题目——实现自己的String类。通过此过程,不仅能够检验开发者对C++基础知识的掌握程度,还能加深对其高级特性的理解。文章详细介绍了如何实现基本的功能,如构造函数、析构函数、拷贝构造函数及赋值运算符重载等。 ... [详细]
  • 探讨了在HTML表单中使用元素代替进行表单提交的方法。 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
  • 本文探讨了Python类型注解使用率低下的原因,主要归结于历史背景和投资回报率(ROI)的考量。文章不仅分析了类型注解的实际效用,还回顾了Python类型注解的发展历程。 ... [详细]
  • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
  • 利用无代码平台实现高效业务应用开发
    随着市场环境的变化加速,全球企业都在探索更为敏捷的应用开发模式,以便快速响应新兴的商业机遇。然而,传统的软件开发方式不仅成本高昂,而且耗时较长,这往往导致IT与业务部门之间的合作障碍,进而影响项目的成功。本文将探讨如何通过无代码开发平台解决这些问题。 ... [详细]
  • 本文探讨了如何将Python对象转换为字节流,以实现文件保存、数据库存储或网络传输的需求。主要介绍了利用pickle模块进行序列化的具体方法。 ... [详细]
author-avatar
淑富世廷789
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有