zoukankan      html  css  js  c++  java
  • 闭包的使用场景

    一般情况下,不要用闭包,除非你真正需要它。

    闭包是什么

    什么是闭包?

    js高级程序设计给出的定义是:有权访问另一个函数作用域中变量的函数。

    怎么创建闭包呢?

    function foo(){
       var a=0;
       function bar(){
    alert(a); } return bar; } var c=foo(); c();

    全局变量c指定对函数foo的内部函数bar的引用;内部函数bar的执行需要依赖函数foo的资源;

    这里就产生了一个闭包,使得a在执行完毕后并返回,不会被JavaScript垃圾回收机制GC回收。

    因为这里c还在引用这bar,而bar依赖着foo,故foo在使用后,仍然存在于内存中。 

    应用场景

    1、内部函数变量、方法访问外部的变量、函数,延长作用域链

    2、即时函数

    3、模仿块级作用域,在函数执行完时,函数内部所有的变量都会被立即销毁。

    注:实现私有变量保护命名空间避免污染全局变量需要长期驻留内存。

    作用域

    在后台执行环境中,闭包的作用域链包含着它自己的作用域、包含函数的作用域、和全局作用域。

    函数的作用域及其所有变量都会在函数执行结束后被销毁。

  • 相关阅读:
    P1536 村村通 题解
    P1551 亲戚题解
    P1185 绘制二叉树 题解
    P3884 [JLOI2009]二叉树问题
    P1087 [NOIP2004 普及组] FBI 树
    P1305 新二叉树题解
    P1229 遍历问题
    P1030 [NOIP2001 普及组] 求先序排列题解
    P1827 [USACO3.4]美国血统 American Heritage 题解
    深度优先搜索dfs 讲解教程
  • 原文地址:https://www.cnblogs.com/WaTa/p/5507713.html
Copyright © 2011-2022 走看看