JavaScript 堆栈内存及内存释放

2020-05-28  本文已影响0人  阿畅_

堆内存

堆内存销毁/释放

栈内存销毁

  1. 全局作用域: 只有当页面关闭的时候,全局作用域才会销毁
  2. 私有作用域: 只有函数执行的时候才会产生私有作用域,一般情况下,函数执行会形成一个新的私有作用域,当私有作用域的代码执行完成后,当前私有所用于会主动的进行释放和销毁。

私有所用于常见的不销毁机制

  1. 函数执行返回一个引用数据类型的值,并且在函数的外面被一个变量或其它的方式接受了,这种情况下,一般形成的私有作用域都不会销毁
function fn() {
    var num = 100
    return function() {}
}
var f = fn() // fn执行形成的这个私有作用域就不会销毁
  1. 在一个私有的作用域中,给 DOM 元素绑定元素方法,一般情况下私有作用域都不会销毁。
  var oDiv = document.getElementById('div')
(function() {
    oDiv.onclick = function() {}
})() // 当前自执行函数执行形成的私有作用域也不会销毁
  1. 还有一个种是不立即销毁
    • 例如
  function fn() {
      var num = 100
      return function() {
          return num
      }
  }
  fn()() 
// 首先会执行 fn 函数,返回一个小函数对应的内存地址,然后让返回的小函数执行
上一篇 下一篇

猜你喜欢

热点阅读