jQuery闭包学习笔记

来源:互联网 发布:永恒之塔人物数据男 编辑:程序博客网 时间:2024/06/05 02:31

定义这些就不说了,往下面看就理解了,有demo

[例1]

使用闭包结构能够跟踪动态环境中数据的实时变化

<script type="text/javascript">    function f()     {    var a = 1 ;//定义局部变量a,初始值为1    /*      定义一个闭包,并赋值给局部变量     */    var b  = function ()    {        return a;   //返回函数参数x    }    a++; //动态更新函数内的局部变量a的值    return b;}    var c =f(); //调用函数    alert(c());  //返回值是2,而不是1</script>

闭包不会因为外部函数环境的注销而消失,并始终存在

<!DOCTYPE html><html lang="en"><head>    <title>标准DOM示例</title>    <meta charset="utf-8"/></head><body><button onclick="f()">     按钮1</button><button onclick="b()">    按钮2</button><button onclick="c()">    按钮3</button><button onclick="d(100)">    按钮4</button></body><script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js" type="text/javascript"></script><script type="text/javascript">function f() //定义普通函数f(),包含多个闭包的外部环境{    var a = 1 ;        //定义函数内局部变量    b = function () {  //闭包b        alert(a);      //寄存函数内局部变量a的值,并进行提示    }    c = function () {  //闭包c        a++;           //递增并寄存函数内局部变量a的值        alert(a);    }    d = function (x) {  //闭包d        a=x;           //传递并寄存函数内局部变量a的值        alert(a);    }}</script></html>

单击按钮1,调用函数f,将生成3个闭包。当函数返回时,3个闭包函数都没有被注销,而变量a由于被闭包的引用而继续存在。如果单击按钮2~4,会由于系统中没有生成闭包结构,弹出编译错误。
这里写图片描述

[例2]

利用闭包存储变量所有的变化

0 0