这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天 。
内存空间
1、栈数据结构 基础数据值在内存中占据固定的大小空间,因此存在栈内存中 js的执行上下文顺序借用了栈数据的存取方式,所以理解栈数据结构的原理和特点十分重要 方式:先进后出,后进先出(类似一盒乒乓球)
2、堆数据结构 引用类型的值是对象,保存在堆内存中 堆数据结构是一种树状结构,它的存取方式,则与口红色号一样,只要有色号,就能找到对应的口红 不必像乒乓球把上面的都拿出来才能获取中间的某一个 好比JSON格式,key:value可以是无序的,因为顺序的不同不影响我们的使用,我们只关心色号
3、队列 学习队列数据结构的目的主要是为了清晰的明白我们js中事件循环(Event Loop) 队列是一种先进先出的数据结构,正如排队过安检是一样的。排在最前面的人一定是最先过安检的人。
4、变量对象与基础数据类型 js执行上下文之后,会创建一个叫变量对象的特殊对象,js的基础数据类型往往保存在变量对象中 基础类型都是一些简单的数据段,所以基础数据类型是按值来访问的,我们可以直接操作变量对象的实际值
5、堆内存与引用类型 js的引用类型储存在堆内存中 js不允许我们直接访问内存中的数据 世界上我们操作的是对象的引用而非实际的值 引用类型是按指针访问的,这个指针指向内存中的实际地址。 因此,我们操作引用类型复制时,它同样会分配一个新的值保存在变量对象中,但这个个新值同样指向内存中的实际值。改变一个,另一个也会发生改变