2016 - 2024

感恩一路有你

js深拷贝的三种实现方式 js栈内存和堆内存的区别?

浏览量:2891 时间:2021-03-16 06:56:17 作者:admin

js栈内存和堆内存的区别?

首先,JavaScript中的变量分为基本类型和引用类型。基本类型是存储在堆栈内存中的简单数据段,而引用类型是指存储在堆内存中的对象。

1. 基本类型

基本类型包括未定义、null、Boolean、number和string。这些类型在内存中占据固定的空间,它们的值存储在堆栈空间中,我们可以通过值访问堆栈空间。

2. 引用类型

引用类型。值大小不是固定的。堆栈内存中的地址指向堆内存中的对象。通过引用访问。如下图所示:堆栈内存只存储对象的访问地址,并在堆内存中为该值分配空间。因为这些值的大小不是固定的,所以不能保存到堆栈内存中。但是内存地址的大小是固定的,所以内存地址可以保存在堆栈内存中。这样,当查询引用类型的变量时,首先从堆栈中读取内存地址,然后通过地址在堆中找到值。为此,我们称之为引用访问。当我们看到一个变量类型已知时,它会在堆栈中分配,比如int、double等。对于其他未知类型,比如用户定义的类型,因为系统不知道它们需要多大,所以程序会应用它们并在堆中分配它们。基本类型的大小是固定的,引用类型的大小不是固定的,它被分开存储以最小化程序占用的内存。

3. 堆栈内存:存储基本类型。堆内存:存储引用类型(在堆栈内存中存储基本类型值以在堆内存中存储对象的地址以引用对象。)

4。基类型将在当前执行环境结束时销毁,而引用类型不会在执行环境结束时销毁。只有当引用它的所有变量都不存在时,垃圾回收机制才会回收该对象。

js深拷贝的三种实现方式 js堆和栈的概念和区别 js微任务和宏任务的区别

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。