首页 > 其他 > 详细

关于堆内存和栈内存

时间:2021-07-27 15:35:51      阅读:19      评论:0      收藏:0      [点我收藏+]

堆内存和栈内存

堆内存的作用:
存放引用数据类型
+ 对象: 存的是键值对
+ 函数: 存的是代码字符串

栈内存的作用:
+ 供JS运行的环境
+ 存基本数据类型

引用数据类型和基本数据类型的区别?
基本数据类型按值操作
引用数据类型按空间地址操作(引用地址)
存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。
当我们需要访问引用类型(如对象,数组,函数等)的值时,首先从中获得该对象的地址指针,然后再从堆内存中取得所需的数据。

基本数据类型和引用类型的区别:
基本数据类型是按值操作,引用数据类型是按空间地址(堆地址)操作

用例题方式理解堆内存和栈内存:

//例题1:
        let ary1 = [3,4];
        let ary2 = ary1;
            ary2[0]=1;
            ary2=[4,5];
            ary2[1]=2;
            ary1[1]=0;
        console.log(ary1,ary2);//10 42
        
        //例题2:
        let obj = {
            a:10,
            b:obj.a*10
        }
        console.log(obj.b); //报错 
        //  Uncaught ReferenceError: Cannot access ‘obj‘ before initialization
        //原因: 因为先创建堆内存,也就是右边的值先创建,但是在创建的过程中(还未创建完成),所以obj还未在栈中创建,所以此时obj是undefined,所以会报错

关于堆内存和栈内存

原文:https://www.cnblogs.com/asas001/p/15065329.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!