js中必须了解的内存原理(堆与栈)

132 阅读1分钟

一.根据内存原理 可以 把数据分为两类 1.值类型 2.引用类型

原理图:

image.png

  • 值类型: (string,number,Boolean,null,undefined)

    !!! 值类型 储存在 '栈' 里面, 赋值给变量的是数据,修改拷贝后的数据不会对原数据造成影响

  • 引用类型 : 数组 对象

    !!! 引用类型 储存在 '堆' 里面 ,赋值给变量的是地址,修改拷贝后的数据会影响原数据

        ! let 关键字 只能在  '栈' 中开辟空间
        引用类型储存在  '堆' 空间里
​
        let arr1 = [10, 20, 30] // let 关键字在'栈'中开辟空间;数组储存           '堆'中,arr1拿到的是存储在'堆'中数组的'地址'
        let arr2 = arr1 // 将'地址'复制给arr2  此时arr2的地址也指向原数组 
        arr2[0] = 100 // 改变了原数组的值,由于地址一致,arr1也会受影响
        console.log(arr1); //[100,20,30]
        console.log(arr2); //[100,20,30]