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

JavaScript中数据类型的存储

区别:

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

基本数据类型

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

引用数据类型

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

JavaScript中的引用数据类型有:

Array

Object

Function

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

复制变量值

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

基本数据类型

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

引用数据类型

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

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

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

转载于:https://www.cnblogs.com/wzp-monkey/p/9900637.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值