美文网首页程序员
js基础7(垃圾回收机制、闭包)

js基础7(垃圾回收机制、闭包)

作者: 逆_3ec2 | 来源:发表于2018-08-27 18:24 被阅读0次

1、js的垃圾回收机制

  1. 浏览器自己做的
  2. 全局作用域声明的一个变量不会被回收,只有关闭浏览器才会回收
  3. 在局部作用域里面,变量在函数体执行完之后,就会被回收

2、闭包

1.可以访问别的函数作用域里面的变量或者参数的函数
2.创建闭包的方法:

一个函数里面嵌套一个函数,内部函数引用外部函数的变量或者参数,这里引用外部函数的变量不会被回收
  function fun (){
    var x = 1; // 在局部作用域里面,使用完之后就被回收
    console.log(x);
  }
fun();

var b = {
  a: 5,
  x: 10  
}
alert(b.x);
b = null; // 释放堆内存的方式

(function (){})(); // 这不是闭包,只是一个函数表达式的自执行

function fn (){
  let a = 10;
  return a; // 可以获取内部函数的变量,但不是闭包
}
var b = fn();
console.log(b);

var x = 1;
function fun1 (){
  var x = 10;
  return function (){
    x++;
    console.log(x);
  }
}
var y = fun1();
y(); // 这是一个闭包,y() = fun1()() 也就是返回的函数执行
/*
  1.编译
    var x;
    function fun1 (){}
    var y;
  2.执行阶段
    x = 1;
    y = fun1();
    y() = fun1()(); // 两次执行
*/
//闭包的用处
var aP = document.getElementsByTagName("p");
    len = aP.length;
for (var i=0;i<len;i++){
  // 使用自定义属性的写法
  aP[i].index = i;
  ap[i].onclick = function (){
    console.log(this.index); // 打印出对应点击P的下标
  }
  // 使用闭包的写法
  // 第一种写法
  fun(i);
  function fun (index){
    aP[index].onclick = function (){
      console.log(index); // 打印出对应点击P的下标
    }
  }
  // 第二种写法
  (function (index){
    aP[index].onclick = function (){
      console.log(index); // 打印出对应点击P的下标
    }
  })(i);
}

相关文章

  • js基础7(垃圾回收机制、闭包)

    1、js的垃圾回收机制 浏览器自己做的 全局作用域声明的一个变量不会被回收,只有关闭浏览器才会回收 在局部作用域里...

  • 闭包的理解。

    js的垃圾回收机制 当一个函数执行完,js引擎会回收不再使用的内存,闭包通过这个作用域的引用,阻止了垃圾回收。 什...

  • JS-高级-05(闭包.单线程问题...)

    闭包 从内存角度分析闭包 闭包的问题 JS垃圾回收机制: 创建对象obj,也就是说,变量obj是对新创建对象的引用...

  • 由闭包引出的垃圾回收

    由闭包引出的垃圾回收 闭包的特性 函数嵌套函数 函数内部可以引用外部的参数和变量 参数和变量不会被垃圾回收机制回收...

  • 深入理解闭包(六)——闭包

    原文地址:深入理解闭包(六)——闭包 终于讲到闭包了,这一路走来不容易。从前面的博文中我们知道,js的垃圾回收机制...

  • 闭包及JS垃圾回收机制

    一、什么是闭包? 如果这个函数能够访问其他函数作用域中的变量,那么这个函数就叫做闭包。 换句话说,只要在一个函数中...

  • JS 垃圾回收机制

    从下面这几个方面简单介绍:JS 垃圾回收机制,几种?weakMap, WeakSet JS 垃圾回收机制, 标记清...

  • javaScript闭包

    闭包的特性: 1.函数嵌套函数2.函数内部可以引用外部的参数和变量3.参数和变量不会被垃圾回收机制回收 闭包的定义...

  • 闭包

    一、理解闭包前js基础1、作用域链(作用域、作用域链中有说)。2、js的内存回收机制。一个函数在执行开始的时候,会...

  • JS中闭包以及垃圾回收机制

    闭包 闭包是指一个函数可以访问另一个函数中的变量。 常见的形式:函数里嵌套函数。 缺点:大量使用闭包会造成内存泄漏...

网友评论

    本文标题:js基础7(垃圾回收机制、闭包)

    本文链接:https://www.haomeiwen.com/subject/puhipftx.html