zoukankan      html  css  js  c++  java
  • 你不知道的闭包知识

    前端小学生,有错谅解

    提到闭包就要理解函数、作用域。

    作用域:

    1.作用域有全局作用域和局部作用域。

           全局作用域在创建js文件时,环境就是全局作用域。

    2.局部作用域又有函数作用域和块级作用域。

         函数作用域即函数内部环境。

         如果在代码的任何位置用大括号括起一个变量,那么该变量也将被封闭,属于块级作用域。

    一、闭包的定义 

    函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起构成闭包closure)。来自MND

    闭包就是能够读取其他函数内部变量的函数。来自百度百科。

    在语法结构上,闭包通俗的来说就是函数的嵌套
    function fn (){
        var a=2;
      return function (){ 
          console.log(a);
    
     }
    }
    fn();

      使得内部环境可以持有外部环境的局部变量(外部环境间接的调用内部环境的局部变量),在本质上就是连接外部函数和内部函数的桥梁。

    二、闭包的特性

    封闭性:外界无法访问闭包内部的数据。

    持久化:对于闭包来说,在外部函数被调用之后,闭包仍然存在

    一般来说函数的局部变量在函数调用执行之后就不会再被访问,但是闭包不同。

     

    三、闭包有什么影响

    如果不是某些特定任务需要使用闭包,不建议使用闭包,因为闭包在处理速度和内存消耗具有负面影响。

    闭包内存泄漏为: key = value,key 被删除了 value 常驻内存中; 

  • 相关阅读:
    数据库表分区
    将对象序列化成XML字符串
    [邀月博客] SQL Server 2008中SQL增强之二:Top新用途
    多线程:子线程执行过程中调用主线程
    Jquery版文字闪烁
    金马自定义对联
    清除数据
    QQ、微信、QQ浏览器UserAgent
    jump.html域名跳转javascript版
    注册页面位置调整
  • 原文地址:https://www.cnblogs.com/babilong/p/13341229.html
Copyright © 2011-2022 走看看