关于堆内存和栈内存

堆内存和栈内存

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

栈内存的作用:
+ 供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,所以会报错

关于堆内存和栈内存

上一篇:弹性布局


下一篇:qcom平台 audio usecase debug