美文网首页
关于闭包

关于闭包

作者: 颖小李 | 来源:发表于2020-05-09 18:30 被阅读0次

参考文章:带你看透闭包的本质,百发百中
1.概念
闭包函数:声明在一个函数中的函数,叫做闭包函数。
闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回之后。
2.特点
让外部访问函数内部变量成为可能;
局部变量会常驻在内存中;
可以避免使用全局变量,防止全局变量污染;
会造成内存泄漏,有一块内存空间被长期占用,而不被释放
3.闭包的创建
闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。闭包会发生内存泄漏,每次外部函数执行的时候,外部函数的引用地址不同,都会重新创建一个新的地址。但凡是当前活动对象中有被内部子集引用的数据,那么这个时候,这个数据不删除,保留一根指针给内部活动对象。
4.闭包的应用场景
闭包找到的是同一地址中父级函数中对应变量的最终值。

function outerFn(){
  var i = 0; 
  function innerFn(){
      i++;
      console.log(i);
  }
  return innerFn;
}
var inner = outerFn();  //每次外部函数执行的时候,都会开辟一块内存空间,外部函数的地址不同,都会重新创建一个新的地址
inner();
inner();
inner();
var inner2 = outerFn();
inner2();
inner2();
inner2();   //1 2 3 1 2 
var i = 0;
function outerFn(){
  function innnerFn(){
       i++;
       console.log(i);
  }
  return innnerFn;
}
var inner1 = outerFn();
var inner2 = outerFn();
inner1();
inner2();
inner1();
inner2();     //1 2 3 4
function f() { 
  var count = 0; 
  return  function() { 
      count++; 
      console.info(count); 
  } 
} 
var t1 = f();
t1();     //1 
t1();     //2 
t1();     //3 

相关文章

  • 闭包介绍

    闭包 关于闭包的定义: A closure is the combination of a function an...

  • SwiftUI 里的 swift 闭包总结

    创建 UI 时的闭包使用 在 SwiftUI 里闭包出现的频率特别高,这里我重新梳理了下闭包的定义。 关于闭包 闭...

  • JavaScript - 闭包

    理解 关于闭包 答案: 用arguments.callee和闭包实现的函数封装 应用 利用闭包实现自动递增计数

  • 关于闭包

    闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达...

  • 关于闭包!!!

    写这篇文章时的心情是十分忐忑的,因为对于我们今天的主角:闭包,很多小伙伴都写过关于它的文章,相信大家也读过不少,那...

  • 关于闭包

    闭包的定义: MDN javascriptkit 词法作用域 (lexical environment) 函数在执...

  • 关于闭包

    闭包的英文是closure,又称词法闭包(Lexical Closure)和函数闭包(Function Closu...

  • 关于闭包

    卡尔维诺中文站留言板这个帖子专门用作卡尔维诺中文站的留言板,欢迎大家留言和提问。...阮一峰2007-01-04T...

  • 关于闭包

    尾随闭包(Trailing Closures) * 如果函数需要一个闭包参数作为参数,且这个参数是最后一个参数,而...

  • 关于闭包

    1. 什么是闭包? 有什么作用 闭包: 作用:1.可以读取函数内部的变量:(如)0_1482243109358_Q...

网友评论

      本文标题:关于闭包

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