zoukankan      html  css  js  c++  java
  • 匿名函数与闭包

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
    <meta charset="UTF-8">
    <title>闭包.html</title>
    <style>
    </style>
    <script src="jquery-1.7.2.min.js"></script>
    <script type="text/javascript">
    //闭包:函数里的匿名函数
    //普通函数
    /*function add(){
    return 123;
    }
    alert(add());
    //把匿名函数赋值给变量,因为它是一条语句,所以要加分号
    var box=function(){
    return "lee";
    };
    alert(box);
    //通过自我执行来执行匿名函数
    (function(a){
    alert(a);
    })("a");
    //使用全局变量进行累加
    var age=100; //全局变量驻留在内存中,所以可以进行累加
    function box(){
    age++;
    }
    alert(age); 100
    box();
    alert(age); 101
    box();
    alert(age); 102
    function box(){
    var age=100; //使用局部变量无法进行累加,因为每执行一次,局部变量就被销毁,再执行的时候就会初始化
    age++;
    return age;
    }
    alert(box()); 101
    alert(box()); 101
    alert(box()); 101
    //使用匿名函数,实现局部变量驻留在内存中,从而实现累加
    function box(){
    var age=100;
    var le=function(){
    age++
    return age;
    }
    return le;
    }
    var b=box(); //box只执行一次
    alert(b()); //后面调用的都是匿名函数
    alert(b());
    alert(b());
    b=null;//解除引用,等待垃圾回收

    //循环里的匿名函数的取值
    function box(){
    var arr=[];
    for(var i=0;i<5;i++){
    arr[i]=function(){
    return i;
    }
    }
    return arr;
    }
    var b=box(); //循环已经完毕了,i最终是4++=5;所以最终就是5
    for(var i=0;i<5;i++){
    alert(b[i]());
    }
    alert(b);

    function box(){
    var arr=[];
    for(var i=0;i<5;i++){
    arr[i]=function(a){
    return a;
    }(i) //通过自我及时执行匿名函数
    }
    return arr;
    }
    var b=box();
    for(var i=0;i<5;i++){
    alert(b[i]); ---0 1 2 3 4
    }*/

    function box(){
    var arr=[];
    for(var i=0;i<5;i++){
    arr[i]=function(a){
    return a;
    }(i)
    }
    return arr;
    }
    var b=box();
    for(var i=0;i<5;i++){
    alert(b[i]); ---0 1 2 3 4
    }

    //闭包是运行在全局中,所以闭包里的this也是指向全局。
    </script>

    </head>
    <body>

    </body>
    </html>

  • 相关阅读:
    类型转换
    with语句用法
    微软工具下载网址
    第2章信息系统服务管理
    声明变量
    管理机中录入485总表的操作方法
    任务 uitableview uiscrollview uiresponder
    如何去掉UITableViewController中的分隔线setSeparatorStyle
    NSRunLoop 概述和原理
    使用 Notifications
  • 原文地址:https://www.cnblogs.com/annie211/p/6051807.html
Copyright © 2011-2022 走看看