javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > js内存管理与闭包

JavaScript内存管理与闭包实例详解

作者:用户9553267381418

不管什么样的编程语言,在代码的执行过程中都是需要给它分配内存的,下面这篇文章主要给大家介绍了关于JavaScript内存管理与闭包的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1. 内存管理的理解

1.1 认识内存管理

不管什么样的编程语言,在代码的执行过程中都是需要给它分配内存的,不同的是某些编程语言需要我们自己手动的管理内存,某些编程语言会可以自动帮助我们管理内存.

1.2 JavaScript的内存管理

2. 垃圾回收(GC)

2.1 认识垃圾回收

2.2 GC算法 – 引用计数

2.3 GC算法 – 标记清除

2.4 其他算法优化补充

3. 闭包的概念理解

3.1 JavaScript的函数式编程

3.2 定义

4. 闭包的内存流程

function createAdder(count) {
  function adder(num) {
    return count + num
  }
  return adder
}

var adder5 = createAdder(5)
adder5(100)
adder5(55)
adder5(12)

var adder8 = createAdder(8)
adder8(22)
adder8(35)
adder8(7)

5. 闭包的内存泄漏

5.1 认识内存泄露

5.2 内存泄露的测试

<button class="create">创建一系列的数组对象</button>
<button class="destroy">销毁一系列的数组对象</button>
<script>

function createArray() {
  // 4 1024 -> 4kb * 1024 -> 4M
  var arr = new Array(1024*1024).fill(1)
  function test() {
    console.log(arr)
  }
  return test
}

// 点击按钮
var totalArr = []

var createBtnEl = document.querySelector(".create")
var destroyBtnEl = document.querySelector(".destroy")
createBtnEl.onclick = function() {
  for (var i = 0; i < 100; i++) {
    totalArr.push(createArray())
  }
  console.log(totalArr.length)
}
destroyBtnEl.onclick = function() {
  // 释放
  totalArr = []
}
</script>

5.3 浏览器的优化

function foo() {
  var name = "foo"
  var age = 18
  var height = 1.88

  function bar() {
    debugger
    console.log(name)
  }

  return bar
}

var fn = foo()
fn()

总结

到此这篇关于JavaScript内存管理与闭包的文章就介绍到这了,更多相关js内存管理与闭包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文