JavaScript 值类型和引用类型在堆栈中的存放
JavaScript 值类型和引用类型在堆栈中的存放属于前端实例代码,有关更多实例代码大家可以查看。
本章节介绍一下JavaScript的值类型和引用类型数据是如何在堆栈中存放的。
其实并不仅仅JavaScript这样,其他语言也大致如此。
一.JavaScript中的数据类型:
数据类型总体可以分为两类:
(1).值类型
(2).引用类型
可能不同的文章,名称上有所区别,其实都是一回事。
(1).值类型数据有:string、number、boolean、symbol(ES6新增)、null、undefined。
(2).引用类型数据有:对象和函数。
更多内容可以参阅JavaScript 数据类型一章节。
二.栈和堆简单介绍:
栈是一种先进后出的数据结构,我们可以通过数组进行以下模拟。
代码如下:
var arr = []; //创建一个栈 arr.push("one");//压入元素"one" ["one"] arr.push("two");//压入元素"two" ["one","two"] arr.pop();//弹出"two" arr.push("three");//压入元素"three" ["one","three"]
上面的相关方法可以参阅一下两篇文章:
(1).JavaScript push()一章节。
(2).JavaScript pop()一章节。
与上面代码对应的图示如下:
值类型是存储在栈中的简单字段,它们直接存储在变量的访问位置。
堆是存放数据的基于散列算法的数据结构,引用类型数据就存放在堆中。
引用类型数据的实际值存储在堆中,栈中的变量只是存储的一个指向堆的地址。
看如下代码实例:
var obj = new Object();
下面就对上面的代码做一下解释:
变量obj在栈中,它存储的是一个地址,这个地址是指向对象new Object()。
对象new Object()存储在堆中。
三.存放数据为什么要区分栈和堆:
什么东西都要讲究一个平衡,栈的存储量比较小,但是速度快。堆则恰好相反。
因为值类型数据比较简单,确定一个数据就确定了它的大小,所以适合存储在栈中。
但是引用类型数据可以无限的扩展,几乎是任意的修改,所以适合存储在堆中。
JavaScript 值类型和引用类型在堆栈中的存放,这样的场景在实际项目中还是用的比较多的,关于JavaScript 值类型和引用类型在堆栈中的存放就介绍到这了。