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、模仿块级作用域,在函数执行完时,函数内部所有的变量都会被立即销毁。

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

    作用域

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

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

  • 相关阅读:
    C# 泛型
    EventHandler<TEventArgs>委托
    只能输入数字 ,只能有一位小数点。
    MVC过滤器 AuthorizeAttribute使用
    NuGet EntityFramework 常用命令
    Stride游戏引擎试毒
    Unity EditorWindow GUI裁剪
    unity2017自定义编译dll
    Unity
    WPF
  • 原文地址:https://www.cnblogs.com/WaTa/p/5507713.html
Copyright © 2011-2022 走看看