码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript两种数据类型的存储方式

时间:2018-11-03 14:40:13      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:内存   基本类型   数组   的区别   基础数据类型   引用   不同   block   种类   

JavaScript中数据类型的存储

区别:

两种类型的区别是:存储位置不同

基本数据类型

原始数据类型是直接存储在栈(stack)中的简单数据段。因为占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。

引用数据类型

引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能。

JavaScript中的引用数据类型有:

Array

Object

引用数据类型是保存在堆内存中的,然后再栈内存中保存一个对堆内存中实际对象的引用(栈内存中保存了一个地址)。所以,JavaScript中对引用数据类型的操作都是操作对象的引用而不是实际的对象。 (这种说法不严密,当复制保存着对象的某个标量时,操作的是对象的引用。但在为对象添加属性时,操作的是实际的对象。)

复制变量值

除了保存的方式不同之外,在从一个变量像另一个变量复制基本类型值和引用类型值是时,也存在不同。

基本数据类型

对于基本类型值,如果进行复制,会为新的变量在栈内存中分配一个新值。

引用数据类型

对于对象、数组这样的引用数据类型,如果进行复制,会为新的变量在栈内存中分配一个新值,但是这个值仅仅是一个地址。也就是说,复制出来的变量和原有的变量具有相同的地址,指向堆内存中的同一个对象。

为什么基础数据类型存在栈中,而引用数据类型存在堆中呢?

1.堆比栈空间大,栈比堆运行速度快。
2.堆内存是无序存储,可以根据引用直接获取。
3.基础数据类型比较稳定,而且相对来说占用的内存小。
4.引用数据类型大小是动态的,而且是无限的。

JavaScript两种数据类型的存储方式

标签:内存   基本类型   数组   的区别   基础数据类型   引用   不同   block   种类   

原文地址:https://www.cnblogs.com/wzp-monkey/p/9900637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!