堆栈内存的作用
JS 中的内存堆内存和栈内存,所有堆栈内存的处理,浏览器会自行在内部执行
栈内存:
- 提供一个供 JS 代码自上而下执行的环境(作用域,代码都是在栈内存中执行的)
- 由于基本类型比较简单,它们都是直接在栈内存中开辟一个位置,直接把值存储进去的
堆内存:引用值对应的空间
存储引用类型的(对象:键值对,函数:代码字符串)
堆内存的释放
让所有引用堆内存空间地址的变量赋值为 null 即可,当堆内存没有被任何的变量或者其他东西引用时,就会在浏览器执行垃圾回收的时候,被销毁掉。
堆内存释放后,里面存储的值也就会被释放掉。
栈内存的释放
全局作用域会在页面关闭或者刷新的时候释放。(栈内存释放后,存储在栈内存中的值也都会销毁。
)
私有作用域:一般情况下,当函数执行完成,所形成的私有作用域(栈内存)都会自动释放掉,但是也有特殊的情况。
函数执行完成,当前形成的栈内存中,某些内容被栈内存意外的变量一直占用,此时栈内存不能释放,栈内存中存储的基本值也不会被释放,一直保存下来。最典型的就是闭包。
1 | var i = 1; |