zoukankan      html  css  js  c++  java
  • js中闭包(积累总结)

    什么是闭包:

    当内部函数 在定义它的作用域 的外部 被引用时,就创建了该内部函数的闭包 ,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被 释放,因为闭包需要它们.

    例子1

    function outerFun()

    {

     var a=0;

     function innerFun()

     {

      a++;

      alert(a);

     }

     return innerFun;  //注意这里

    }

    var obj=outerFun();

    obj();  //结果为1

    obj();  //结果为2

    var obj2=outerFun();

    obj2();  //结果为1

    obj2();  //结果为2

     例子2

    function Foo() {

        var i = 0;

        return function() {

            console.log(i++);

        }

    }

    var f1 = Foo(),

        f2 = Foo();

    f1();

    f1();

    f2();

    // 0 1 0

    由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"

    闭包的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。请看下面的例子,闭包使得内部变量记住上一次调用时的运算结果。

    所以内存消耗很大。因此不能滥用闭包,否则会造成网页的性能问题。

  • 相关阅读:
    第六章 条件处理
    VS2019配置MKL教程(Windows)
    攻防世界--srm-50
    攻防世界--The_Maya_Society
    攻防世界--re1-100
    BUUCTF--findit
    凯撒加密与解密实现
    BUUCTF--rsa
    正则表达式
    PyQuery详解
  • 原文地址:https://www.cnblogs.com/xiongy/p/7856821.html
Copyright © 2011-2022 走看看