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 值类型和引用类型在堆栈中的存放就介绍到这了。

回复

我来回复
  • 暂无回复内容