zoukankan      html  css  js  c++  java
  • 关于闭包

    正常情况下外部变量是不能访问一个函数的内部变量的 例如:

    function foo(){
      var a=122
    }
    console.log(a)
    结果:报错  a is not defined

    那如何访问一个函数的内部变量呢?先看看下边两种:

    function foo(){
        var a=111;
        function bar(){
            console.log(a)    
        }
    	bar()
    }    
    foo()
    打印:111
    function foo(){
        var a=111;
        return function bar(){
        console.log(a)
      } }
    var result=foo();
    result()
    打印:111  

    上述代码中第二种函数bar就是闭包。

    关于闭包的用途

    闭包除了读取函数内部的变量外,还可以将变量的值一直保存在内存中;

    例如:

    function f1(){
        var n=999;
        function f2(){
          alert(n+=1);
        }
        return f2;
      }
    var s=f1();
    s();//1000
    s();//1001
    还有几个关于闭包的经典面试题

    for (var i = 1; i <= 5; i++) {

        (function(i){

            setTimeout( function timer() {

                  console.log(i);

              },  10000 );

        })(i);

    }

    打印12345

      

    此博客文章多为本姑娘学习笔记!有不对的地方还望指正!!!么么哒
  • 相关阅读:
    委托与事件
    JSON
    JavascriptBoolean运算符
    SQL执行字符串
    ref和out与SQL中的output
    早绑定、晚绑定
    浅复制和深复制
    Android Fragments 详细使用
    Android 两种为自定义组件添加属性的使用方法和区别
    Gallery 3D+倒影 滑动切换图片示例(转)
  • 原文地址:https://www.cnblogs.com/whyue/p/7418488.html
Copyright © 2011-2022 走看看