javascript中数据的存储问题
在生活中,我们买东西都会考虑这个东西应该放在哪里,放在哪里是最合适的,同样在JavaScript中我们创建的数据也是需要一个存放的空间,
我们应该先知道基本的数据结构有哪些
数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
这里面我们简单了解以下在JavaScript中能用到的三种数据结构
基本数据结构
栈
栈,只允许在一段进行插入或者删除操作的线性表,是一种先进后出的数据结构。
堆
堆是基于散列算法的数据结构。
队列
队列是一种先进先出(FIFO)的数据结构。
在js中有两种数据类型,一种是基本数据类型,一种是引用数据类型。它们其中有一个区别就是存储的位置不同。
基本数据类型
我们都知道JavaScript中的基本数据类型有:
String
Number
Boolean
Undefined
Null
Symbol
基本数据类型都是一些简单的数据段,它们是存储在栈内存中。
引用数据类型
JavaScript中的引用数据类型有:
Array
Object
引用数据类型是保存在堆内存中的,然后在栈内存中保存一个对堆内存中实际对象的引用。所以,JavaScript中对引用数据类型的操作都是操作对象的引用而不是实际的对象。
可以理解为,栈内存中保存了一个地址,这个地址和堆内存中的实际值是相关的。
为什么基础数据类型存在栈中,而引用数据类型存在堆中呢?
- 堆比栈大,栈比堆速度快。
- 基础数据类型比较稳定,而且相对来说占用的内存小。
- 引用数据类型大小是动态的,而且是无限的。
- 堆内存是无序存储,可以根据引用直接获取。