1、内存
- 在编写正式内容前,首先需要弄清楚的一个概念就是:
内存
内存
:也就是电脑中的硬件
,内存越大,可以同时开启的程序就越多
内存的作用
:
- 存储运行中的代码,把
代码执行
过程中所需要的数据
,都放在内存
中,进行临时的存储
- 程序关闭时,在从
内存
中取出这些数据,所有的变量
在程序运行的过程中都是放在内存中进行存储的
2、堆/栈概念
2.1、栈
- 概念:
栈
是一种数据结构,遵循后进先出(LIFO,Last In First Out)
的原则。
- 也就是:最先入栈的数据最后出栈,而最后入栈的数据最先出栈。
- 栈中的
数据结构
:
- 在
栈
中,通常存储函数调用时的局部变量、参数和返回地址
。
栈
中的每个元素可能包括变量
的实际值
或对象的引用地址
。
2.2、堆
- 概念:
堆
是一种用于动态分配内存
的内存区域
- 程序运行时,可以在
堆
中申请所需的内存,并在使用完毕后手动释放。
- 堆中的
数据结构
:
栈中的指针
:保存指向堆中数据的内存地址。
堆中的值
:实际存储在堆中的数据,如对象的属性或数组的元素。
2.3、注意
- 我们在存储
高级类型
的变量
中,存储的并不是高级类型的值
,而是高级类型的地址
- 比如:在
栈
里存储了arr
数组,那么跟它一起存放的并不是对应的数据,而是对应数据存储的地址
- 这个地址的对应的位置是
堆
,把数据放在了堆
里,并给它取一个"名字"
也就是地址
,方便栈
获取地址
- 堆/栈的
存储模型
不是一样的
3、高级类型存储的特征
var arr1 = [];
var arr2 = [];